Может быть, не совсем по теме, но используя VBScript, я написал это:
option explicit
dim fso, wshSHell, objShellApp, args, stdin,stdout
set fso = CreateObject("Scripting.FileSystemObject")
Set wshShell = CreateObject("WScript.Shell")
set objShellApp = CreateObject("Shell.Application")
Set args = Wscript.Arguments
set stdin = wscript.stdin
set stdout = wscript.stdout
dim filename, txtFile
filename = args(0)
Const adTypeBinary = 1
'Create Stream object
Dim BinaryStream, data
Set BinaryStream = CreateObject("ADODB.Stream")
'Specify stream type - we want To get binary data.
BinaryStream.Type = adTypeBinary
'Open the stream
BinaryStream.Open
'Load the file data from disk To stream object
BinaryStream.LoadFromFile filename
'Open the stream And get binary data from the object
data = BinaryStream.Read
BinaryStream.close
dim i, item, strLine, hexLine
hexLine = ""
strLine = ""
stdout.writeline "Decimal |Hex |Data | ASCII 33-254"
for i = 0 to lenb(data)-1
item = ascb(midb(data,i+1,1))
if ((i MOD 16) = 0) and (i<>0) then
stdout.writeLine right("00000000" & i,8) & "|" & right("00000000" & hex(i),8) & "|" & hexLine & " | " & strLine
hexLine = ""
strLine = ""
end if
hexLine = hexLine & right("0" & hex(item),2) & " "
if (item <= 32) or (item > 254) then
strLine=strLine + "."
else
strLine = strLine & chr(item)
end if
next
Ключом к этому решению является знание того, что переменная 'data' содержит массив байтов. Вы можете справиться с этим, используя функцию lenb (длина байтового массива) и midb (чтобы извлечь один или несколько байтов).
Запустите скрипт следующим образом:
cscript dumphex.vbs my_binary_file.bin > my_binary_file.hex.txt
Это выведет к стандартному шестнадцатеричному коду всех данных двоичного файла. Каждая строка из 16 шестнадцатеричных кодов начинается с десятичного + шестнадцатеричного счетчика номера байта. Последний столбец отображает читаемую ASCII между 33 и 254.
Также здорово обойти тот раздражающий редактор, который интерпретирует ваши коды UTF-8, если вы хотите видеть только точные коды в ваших файлах ascii.