批处理FOR 中调用函数10进制转换16进制,预处理问题
FOR循环中读取文件中每行的5个变量,转换成4位的16进制数例如:@ECHOOFFSETLOCALENABLEDELAYEDEXPANSIONSETchange=0123...
FOR循环中读取文件中 每行的5个变量,转换成4位的16进制数
例如:
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET change=0123456789ABCDEF
FOR /F " tokens=1-5" %%i IN (1.txt) DO (
SET "str1=%%i"
SET "str2=%%j"
SET "str3=%%k"
SET "str4=%%l"
SET "str5=%%m"
:a
SET /a count+=1
set /a mod = %str1% %% 16
set /a str1/=16
SET A=!f:~%mod%,1!
set en=%A%%en%
if %count% lss 4 (goto a)
ECHO !en! ::en 是一个四位的10进制数,例如str1=15,得到的en是000F
这里需要把str1~str5 都转成4位16进制,有高效的调用吗?初用bat 还不是很熟悉
在SET A=!f:%mod%,1! 把每一位替换成16进制表示时,这样会出错,得到的A可能是f:~15,1
有一个预处理的问题,希望有人能给解答下,也希望能给出一个好的办法解决
倘若直接使用SET A=!f:~15,1! 这样得到的A会是15,这样是没错的 展开
例如:
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET change=0123456789ABCDEF
FOR /F " tokens=1-5" %%i IN (1.txt) DO (
SET "str1=%%i"
SET "str2=%%j"
SET "str3=%%k"
SET "str4=%%l"
SET "str5=%%m"
:a
SET /a count+=1
set /a mod = %str1% %% 16
set /a str1/=16
SET A=!f:~%mod%,1!
set en=%A%%en%
if %count% lss 4 (goto a)
ECHO !en! ::en 是一个四位的10进制数,例如str1=15,得到的en是000F
这里需要把str1~str5 都转成4位16进制,有高效的调用吗?初用bat 还不是很熟悉
在SET A=!f:%mod%,1! 把每一位替换成16进制表示时,这样会出错,得到的A可能是f:~15,1
有一个预处理的问题,希望有人能给解答下,也希望能给出一个好的办法解决
倘若直接使用SET A=!f:~15,1! 这样得到的A会是15,这样是没错的 展开
1个回答
展开全部
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
set "change=0123456789ABCDEF"
for /f "tokens=1-5" %%i in (1.txt) do (
call:fun %%i str1
call:fun %%j str2
call:fun %%k str3
call:fun %%l str4
call:fun %%m str5
echo !str1!, !str2!, !str3!, !str4!, !str5!
)
pause
goto:eof
:fun
set "str=%1"
set "count=0"
set "en="
:a
set /a count+=1
set /a mod = %str% %% 16
set /a str/=16
set A=!change:~%mod%,1!
set en=%A%%en%
if %count% lss 4 (goto a)
set "%2=%en%"
goto:eof
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询