admin管理员组文章数量:1794759
windows批处理实现10进制16进制二进制转换
win10系统后系统自带计算器在程序员计算器里,在不同的进制下输入数据,对应的其它进制也会显示出来,而win7系统自带的计算器就没有这功能,想看对应的进制数据,需要手动点一下才行,
于是乎,写了个批处理,实现了输入10进制或16进制数据后(输入二进制数的功能暂未实现,后续实现后更新出来),输出对应的10进制,16进制,2进制数据。
运行效果图: 实现代码:(将下列代码复制到.bat文件里保存并运行bat文件即可):
@echo off setlocal ENABLEDELAYEDEXPANSION set hexstr=ss set binstr=ss set /a ii=0 set /a dec=0 set /a bin=0 set hex_return=123 set bin_return=123 set returnPara=321 set hex_type=x set HEX_type1=X set dec_type=d set dec_type1=D set blank=, set bincnt=0 set binsl=4 echo 10进制数据前加字母D(大小写都有效) echo 16进制数据前加0x(x大小写都有效) :start set bincnt=0 set binsl=4 echo 请输入数据 set /p input_str= ::输入字符到变量input_str set /A str_num=%input_str% ::如果输入的是16进制数,将输入的16进制数转换为10进制赋值给str_num ::echo %str_num% set str_type=%input_str:~0,1% ::提取输入字符的第一个字符(从0开始的第一个字符) set str_type1=%input_str:~1,1% ::提取输入字符的第2个字符(从1开始的第一个字符) ::echo !str_type! ::echo !str_type1! ::echo !dec_type! ::pause ::echo !str_num! ::echo %str_num% ::pause if !str_type1! equ !hex_type! ( call:dec2hex !str_num! set hex=!hex_return! call:dec2bin !str_num! set bin=!bin_return! echo dec=%str_num%, hex=!hex_return!, bin=!bin_return! )else if !str_type1! equ !HEX_type1! ( call:dec2hex !str_num! set hex=!hex_return! call:dec2bin !str_num! set bin=!bin_return! echo dec=%str_num%, hex=!hex_return!, bin=!bin_return! )else if !str_type! equ !dec_type! ( set str_num=%input_str:~1,15% call:dec2hex !str_num! set hex=!hex_return! call:dec2bin !str_num! set bin=!bin_return! echo dec=!str_num!, hex=!hex_return!, bin=!bin_return! )else if !str_type! == !dec_type1! ( set str_num=%input_str:~1,15% call:dec2hex !str_num! set hex=!hex_return! call:dec2bin !str_num! set bin=!bin_return! echo dec=!str_num!, hex=!hex_return!, bin=!bin_return! ) else (echo input err) goto start ::end
pause for /l %%i in (0,1,255) do ( ::echo i= %%i set /a ii=%%i set /a dec=!ii! ::echo dec= %%i call:dec2hex !dec! set return2=!return! set hexstr2=!hexstr! echo dec= %%i, return2=!return!, hexstr2=!hexstr2! set /a ii+=1 ) echo done pause :dec2hex set code=0123456789ABCDEF set /a num=%1 ::将第一个参数赋值给变量a ::echo %num% ::pause set var=%num% ::echo %var% ::pause set str= :again set /a tra=%var%%%16 ::echo test ::echo !tra! call,set tra=%%code:~%tra%,1%% ::echo tra=%tra% ::pause set /a var/=16 ::echo var=%var% set str=%tra%%str% if %var% geq 10 goto again ::echo %var%%str% if %var% neq 0 (set hexstr=0x%var%%str%) else (set hexstr=0x%str%) ::echo hexstr=%hexstr% set hex_return=%hexstr% ::echo return=%return% goto:eof
:dec2bin set code=01 set /a num=%1 set var=%num% set str= :again1 set /a tra=%var%%%2 ::echo %var% ::echo %tra% ::pause call,set tra=%%code:~%tra%,1%% ::echo tra=%tra% ::pause set /a var/=2 ::echo var=%var% set /a bincnt+=1 if !bincnt! == !binsl! ( set str=%blank%%tra%%str% ::长度等于4时,在字符前增加","字符 set /a bincnt=0 ) else (set str=%tra%%str%) if %var% geq 2 goto again1 ::echo %var%%str% if %var% neq 0 (set binstr=0b %var%%str%) else (set binstr=0b %str%) ::echo binstr=%binstr% set bin_return=%binstr% ::echo return=%return% goto:eof
版权声明:本文标题:windows批处理实现10进制16进制二进制转换 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686579317a83977.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论