我一直在研究几个小时,但我无法弄清楚如何转换文件" hex.txt" (用十六进制)到" dec.txt"(十进制)。
Hex.txt有一堆十六进制值,如下所示:
0x0000: 0a 00 00 08 00 06 61 75 74 68 6f 72
0x000c: 00 09 41 6e 6f 6e 79 6d 6f 75 73 09
0x0018: 00 06 62 6c 6f 63 6b 73 0a 00 00 01
0x0024: 5a 09 00 03 70 6f 73 03 00 00 00 03
我想用batch,vbs或python将它转换为十进制。 任何帮助表示赞赏。
答案 0 :(得分:3)
批处理解决方案(为什么标题中的其他语言但没有标记?)。
set /A
会将十六进制值转换为十进制
0x
for /f
将冒号处的行拆分为地址
和值以及另一个简单的for
来处理每个值。> type Hex2Dec.cmd
@Echo off & Setlocal EnableDelayedExpansion
for /F "tokens=1* delims=:" %%A in (hex.txt) Do (
Set /A DecAddr=%%A
Set "DecAddr= !DecAddr!"
Set "Dec="
For %%C in (%%B) do (
Set /A Dec#=0x%%C
Set "Dec#= !Dec#!"
Set Dec=!Dec!!Dec#:~-4!
)
Echo !DecAddr:~-5!: !Dec!
)
示例输出:
> Hex2Dec.cmd
0: 10 0 0 8 0 6 97 117 116 104 111 114
12: 0 9 65 110 111 110 121 109 111 117 115 9
24: 0 6 98 108 111 99 107 115 10 0 0 1
36: 90 9 0 3 112 111 115 3 0 0 0 3
答案 1 :(得分:3)
为什么是小数?很容易将每个十六进制数转换为十进制数,但您显示的十六进制格式看起来像二进制数据(我认为这是您需要的)
@echo off
set "source=.\data.txt"
del /s /q /f .\temp.data
for /f "usebackq tokens=2,3 delims=:x" %%a in ("%source%") do (
rem (echo(%%a %%b)>>.\temp.data
(echo(%%a %%b)>>.\temp.data
)
certutil -decodehex -f temp.data converted
Certutil可以将十六进制转换为二进制,但它使用的格式有点不同:
和x
所以你需要一个临时文件来清除它们。