一、十六进制转十进制
十六进制数转十进制数相对比较简单,可以直接通过0x来实现。
见如下代码:
@echo off
chcp 65001
set t=aa
set /a hex=0x%t%
echo data=%hex%
pause
结果:
二、十进制转十六进制
这个转化比较麻烦,没有简便的方式转化。见如下代码:
@echo off
chcp 65001
set code=0123456789ABCDEF
set dec=255
echo dec:%dec%
echo %dec%|findstr "[^0-9]"&&exit /b 1
:again
set /a tra=%dec%%%16
call,set tra=%%code:~%tra%,1%%
set /a dec/=16
set str=%tra%%str%
if %dec% geq 16 goto again
call,set dec=%%code:~%dec%,1%%
echo hex:0x%dec%%str%
pause
结果:
三、互转
@echo off
chcp 65001
setlocal enabledelayedexpansion
set code=0123456789ABCDEF
set /a num=65535
call :dec2hex %num% hex
echo.
echo 结果:%errorlevel%
if %errorlevel%==0 (
echo dec2hex结果=0x%hex%
set /a ori=0x!hex!
echo ori=!ori!
) else (echo 转化错误)
pause
:dec2hex
set dec=%1
echo dec:%dec%
echo %dec%|findstr "[^0-9]"&&exit /b 1
:again
set /a tra=%dec%%%16
call,set tra=%%code:~%tra%,1%%
set /a dec/=16
set str=%tra%%str%
if %dec% geq 16 goto again
call,set dec=%%code:~%dec%,1%%
echo hex:0x%dec%%str%
set hex=%dec%%str%
exit /b 0
endlocal
结果: