将一系列字节从十六进制数转换为十进制数

将一系列字节从十六进制数转换为十进制数

是否有一个应用程序/脚本可以将一系列字节从十六进制转换为十进制(如果没有,是否有一种简单的方法可以在命令提示符中用几行代码实现这一点)?

03 01 9d f0 b4 05 01 67 40 20 00 6b ad

答案1

有大量的在线转换器,例如这个:http://home2.paulschou.net/tools/xlate/

答案2

.js脚本cscript

num = [];
for (i = 0; i < WScript.Arguments.Length; i++) {
    arg = WScript.Arguments(i);
    num.push(parseInt(arg, 16));
}
WScript.Echo(num.join(" "));

批处理脚本cmd.exe

@echo off & setlocal
set /a out=0x%1
:loop
    if "%~1"=="" goto :end
    set /a num=0x%1
    set out=%out% %num%
    shift
    goto :loop
:end
    echo.%out%

答案3

如果您想要的只是将十六进制字符串转换为十进制字符串,那么这个小小的 perl 程序就可以做到:

#!/usr/bin/perl
while(<>){s/(.\s*.)\s*/hex($1).' '/eg;print;}

输入.十六进制:

68edcdec4e2c8eae8d2c8e2dedcd6e04d2042fedae52ceac04 ccedaecd8c042ccd8c046cedad0e8dac8eac8c048e0dac044a a82889046c0d2c8d8daccdecacc5042bedae4e04ee2dcd046c

./hex2dec.pl < input.hex

它可以容忍源中的空格并且仅查找连续的十六进制数字对。

只需使用 sprintf、push、split 等进行修改即可控制输出格式

如果你在 Windows 上安装了 perl,那么这将在命令行上运行:

perl -e "while(<>){s/(.\s*.)\s*/hex($1).' '/eg;print;}" < input.hex

Perl 太棒了。每个人都应该拥有它!

相关内容