Написание не-ASCII-кодов 80-FF сложно. Я не видел простого решения, прежде чем это так.
Использование:
@echo off
call :writeHex "30 31 32 9F 00 a0 FF" "outputfile.bin"
exit /b
или
@echo off
call :writeHex 3031329F00a0FF "outputfile.bin"
exit /b
Функция:
:writeHex
rem Usage:
rem call :writeHex 3031329F00a0FF "outputfile.bin"
rem call :writeHex "30 31 32 9F 00 a0 FF" "outputfile.bin"
findstr /r "^[^a-z]*:::" "%~f0" >"%temp%\writebin.vbs"
cscript //nologo "%temp%\writebin.vbs" "%~1" "%~2"
del "%temp%\writebin.vbs"
exit /b
:::hx = replace(wscript.arguments(0)," ","")
:::file = wscript.arguments(1)
:::
:::length = len(hx)/2 : if length mod 2 then hx = hx & "00"
:::
:::s = ""
:::for i=1 to len(hx) step 4
::: s = s & chrW(clng("&H" & mid(hx,i,2)) + clng("&H" & mid(hx,i+2,2)) * 256)
:::next
:::
:::typeBin = 1 : typeText = 2 : bOverwrite = 2
:::with CreateObject("ADODB.Stream")
::: .type = typeText : .open : .writeText s : .saveToFile file, bOverwrite : .close
::: .type = typeBin : .open : .loadFromFile file : .position = 2 : data = .read(length)
::: .position = 0 : .write data
::: .position = length : .setEOS
::: .saveToFile file, bOverwrite
::: .close
:::end with
Как вы вводите такие двоичные данные, и как вы его используете? – Claudio
Я хочу создать двоичный файл. Я попробовал команду echo. Он всегда записывает шестнадцатеричный код символа в файл. Если я напишу 24 в файл и hexdump файл, я должен получить только 24 - это требование. Если я использую echo 24 и hexdump файл, я получаю 32 34, соответствующий ascii-кодам '2' и '4'. Я просто хочу создать шестнадцатеричный заголовок для моего изображения. У меня есть шестнадцатеричный файл и вы хотите добавить к нему заголовок, как волшебное число. И это я должен сделать с помощью пакетного сценария. – Akshaya
Что делать, если я хочу ввести шестнадцатеричные значения вне диапазона набора символов ASCII? – Akshaya