web-dev-qa-db-ja.com

一連のバイトを16進数から10進数に変換する

一連のバイトを16進数から12進数に変換できるアプリ/スクリプトはありますか(そうでない場合は、コマンドプロンプトで数行でこれを実現する簡単な方法はありますか)?

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

このようなオンラインコンバーターはたくさんあります: http://home2.paulschou.net/tools/xlate/

1
Andrew Lambert

cscript.jsスクリプト:

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
user1686

16進数の文字列から10進数の文字列だけが必要な場合は、この小さなPerlプログラムがそれを実行します。

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

input.hex:

68edcdec4e2c8eae8d2c8e2dedcd6e04d2042fedae52ceac04 ccedaecd8c042ccd8c046cedad0e8dac8eac8c048e0dac044a a82889046c0d2c8d8daccdecacc5042bedae4e04ee2dcd0

./hex2dec.pl < input.hex

ソース内の空白については許容され、16進数の連続するペアのみを検索します。

Sprintf、Push、splitなどで変更するだけで出力フォーマットを制御できます

WindowsにPerlをインストールすると、これはコマンドラインで機能します。

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

Perlは素晴らしいです。誰もそれなしではいけません!

0