Тема: VBS: чтение и запись бинарных данных
Аналогичная темка уже имеется в Коллекции. Но там - пример на JS и, на мой взгляд, решение, которое я предлагаю вашему вниманию - интереснее. Интереснее, за счет вполне самостоятельных процедур конвертации битового массива в стринг и наоборот (раскопал тут)
В общем - смотрите сами:
' Convert Byte-Array to VBScript ANSI string (c)Paul Randall
Function ByteArray2String(bArr)
Dim OriginalLocale
OriginalLocale = SetLocale("en-us")
With CreateObject("ADODB.Stream")
.Type = 1 'adTypeBinary
.Open
.Write bArr
.Position = 0
.Type = 2 'adTypeText
.Charset = "x-ansi"
ByteArray2String = .Readtext
End With
SetLocale OriginalLocale
End Function
'Convert VBScript ANSI string to Byte-Array (c)Paul Randall
Function String2ByteArray(str)
Dim OriginalLocale
OriginalLocale = SetLocale("en-us")
With CreateObject("ADODB.Stream")
.Type = 2 'adTypeText
.Charset = "x-ansi"
.Open
.WriteText str, 0
.Position = 0
.Type = 1 'adTypeBinary
String2ByteArray = .Read
End With
SetLocale OriginalLocale
End Function
Function ReadBinaryFile(filename)
Dim bArr
With CreateObject("ADODB.Stream")
.Type = 1 'adTypeBinary
.Open
.LoadFromFile filename
bArr = .Read
.Close
ReadBinaryFile = bArr
End With
End Function
Function SaveBinaryData(filename, byteArray)
Const adSaveCreateOverWrite = 2
With CreateObject("ADODB.Stream")
.Type = 1 'adTypeBinary
.Open
.Write byteArray
.SaveToFile filename, adSaveCreateOverWrite
.Close
End With
End Function
'============================================================
' Проверка
file = "input.bin"
file_out = "output.bin"
Dim file, file_out, Arr, strArr, strHex, x, i
' Читаем бинарный файл и преобразуем его в строку из hex значений
Arr = ReadBinaryFile(file)
strArr = ByteArray2String(Arr)
strHex = ""
For i = 1 To Len(strArr)
x = Hex(Asc(Mid(strArr, i, 1)))
If Len(x) < 2 Then x = "0" & x
strHex = strHex + x
Next
WScript.Echo strHex
' Читаем строку из hex значений и записываем её в бинарный файл
strArr = ""
For i = 1 To Len(strHex) Step 2
strArr = strArr & Chr("&H" & Mid(strHex, i, 2))
Next
Arr = String2ByteArray(strArr)
SaveBinaryData file_out, Arr
'Можете сравнить входной и результирующий файл - они равны!