中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: [CMD]十六进制转换为十进制 上一主题 | 下一主题
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『楼 主』:  [CMD]十六进制转换为十进制


  昨天玩一个在线过关游戏,有一个题目是直接给出了下一关的链接,但是形式是这样的:66656E677A686F6E6764656368656E67206E756F2E617370,一想,这是十六进制形式表示的ASCII码,非要一个个的将它们转换为%66%65%6E%67%7A%68%6F%6E%67%64%65%63%68%65%6E%67%20%6E%75%6F%2E%61%73%70的形式,但是这样太麻烦了,所以就想到写一个自动为字符串添加%符号的脚本。

  最后又想将它功能加强一下,将这些十六进制的数依次转换成十进制数岂不是更好?于是又改进了一下,可以检测出输入字符串的长度,自动判断是不是十六进制的数。

  代码如下,大家帮忙测试一下,有错误的地方尽可指出来。
::cody by lxmxn @ cn-dos.net
::Date 20:11 2006-12-29
@echo off&Setlocal EnableDelayedExpansion
:redo
set /p str=Please input a hex string:
if "%str%"=="" echo Invalid input,please input again.&pause&goto redo
cls&set a=0
:begin
if not "!str:~%a%,1!"=="" set /a a+=1&&goto begin
echo The string you inputed is ■%str%■,it length:■%a%■
echo;
set/p=The final result is:■<nul
for /l %%a in (0,2,%a%) do (
        Setlocal EnableDelayedExpansion
        if not "!str:~%%a,1!"=="" (
                set /p result=%%!str:~%%a,2!<nul
        )
        Endlocal
)
echo ■
echo;
set /p choose=Change it to Hexadecimal? Please Enter Y or N to choose:^>
if /i not "%choose%"=="y" goto :eof
echo %str%|findstr "^[0-9a-fA-F]*$" >nul
if errorlevel 1 echo;&echo;The string isn't a hexadecimal number.Any key to Exit.&pause>nul&goto :eof
echo;
(for /l %%a in (0,2,%a%) do (
        Setlocal EnableDelayedExpansion
        if not "!str:~%%a,1!"=="" (
                set /a b=0x!str:~%%a,2!
                set /p b= !b!<nul
        )
        Endlocal
))&echo;&echo;&echo;Press any key to exit.&pause>nul&goto :eof


[ Last edited by lxmxn on 2007-1-3 at 03:25 PM ]

   此帖被 +7 点积分      点击查看详情   
评分人:【 redtek 分数: +7  时间:2006-12-30 21:48


2006-12-30 09:17
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
redtek
金牌会员





积分 2902
发帖 1147
注册 2006-9-21
状态 离线
『第 2 楼』:  

顶~~·!!!
lxmxn兄这么精彩的代码让人眼前一亮,狂顶+欣赏~~~



    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
2006-12-30 09:27
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zh159
金牌会员




积分 3687
发帖 1467
注册 2005-8-8
状态 离线
『第 3 楼』:  

如果不计数的话,加%更简单

2006-12-30 09:36
查看资料  发短消息 网志   编辑帖子  回复  引用回复
redtek
金牌会员





积分 2902
发帖 1147
注册 2006-9-21
状态 离线
『第 4 楼』:  

刚才到 Google 上一查这串数字,是一个在线黑客过关的游戏~:) 深了~~



    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
2006-12-30 09:41
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 5 楼』:  



  Quote:
Originally posted by zh159 at 2006-12-29 20:36:
如果不计数的话,加%更简单


  兄不如将你的方法也拿出来分享一下? ^_^


2006-12-30 10:40
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zh159
金牌会员




积分 3687
发帖 1467
注册 2005-8-8
状态 离线
『第 6 楼』:  

我不是在字符统计的帖子里写过么?!
@echo off
setlocal EnableDelayedExpansion
set str=66656E677A686F6E6764656368656E67206E756F2E617370

:loop1
set "str$=%str$%%%%str:~0,2%"&&set str=%str:~2%
if not "%str%" == "" goto loop1

set str$=%str$:~1%
echo %str$%

set str$=!str$:%%= !
for %%n in (%str$%) do (
    set /a p=0x%%n
    call set /p p=%%p%% <nul)
echo.
pause
exit
[ Last edited by zh159 on 2006-12-30 at 11:21 AM ]

2006-12-30 10:57
查看资料  发短消息 网志   编辑帖子  回复  引用回复
tigerpower
中级用户

大师兄


积分 377
发帖 99
注册 2005-8-26
状态 离线
『第 7 楼』:  

可使用mawk,请参见此帖(点击前往)的『第 15 楼』
将hex.txt中的内容替换成

66656E677A686F6E6764656368656E67206E756F2E617370

即可。

[ Last edited by tigerpower on 2006-12-30 at 11:27 AM ]

2006-12-30 11:20
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 8 楼』:  



  Quote:
Originally posted by tigerpower at 2006-12-29 22:20:
可使用mawk,请参见此帖(点击前往)的『第 15 楼』
将hex.txt中的内容替换成
...


  不知道是我的网速慢还是其它的原因,此贴中的下载mawk这个网页怎么也打不开,到了41%就卡着不动了。用mawk的朋友,麻烦上传一个。


2006-12-31 01:53
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tigerpower
中级用户

大师兄


积分 377
发帖 99
注册 2005-8-26
状态 离线
『第 9 楼』:  



  Quote:
Originally posted by lxmxn at 2006-12-31 01:53:

  不知道是我的网速慢还是其它的原因,此贴中的下载mawk这个网页怎么也打不开,到了41%就卡着不动了。用mawk的朋友,麻烦上传� ...

    恩,网页打不开的原因估计还是因为台湾地震震伤了海底光缆。刚才试了一下,那个网页可以打开了。

附件 1: mawk.zip (2007-1-1 11:16, 69.51 K, 下载附件所需积分 1 点 ,下载次数: 18)
2007-1-1 11:16
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: