3

Есть ли приложение / сценарий, который может преобразовать серию байтов из шестнадцатеричного значения в десятичное (если нет, есть ли простой способ добиться этого в командной строке в несколько строк)?

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

3 ответа3

3

Скрипт .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%
1

Есть множество онлайн-конвертеров, таких как этот: http://home2.paulschou.net/tools/xlate/

0

Если все, что вам нужно, это строка от шестнадцатеричной до десятичной строки, то эта крошечная Perl-программа сделает это:

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

input.hex:

68edcdec4e2c8eae8d2c8e2dedcd6e04d2042fedae52ceac04 ccedaecd8c042ccd8c046cedad0e8dac8eac8c048e0dac044a a82889046c0d2c8d8daccdecacd46ed4ccc4

./hex2dec.pl < input.hex

Он прощает про пробелы в источнике и ищет только пары последовательных шестнадцатеричных цифр.

Просто измените с помощью sprintf, push, split и т.д. Для управления форматом вывода

Если вы установите Perl на Windows, то это будет работать в командной строке:

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

Perl потрясающий Никто не должен быть без этого!

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .