以二进制模式将十六进制字符串写入文件

时间:2019-02-12 21:20:42

标签: excel vba binaryfiles

我想将十六进制值写入二进制文件,以使它们在十六进制编辑器中打开时看起来相同。

我当前的代码是这样:

Sub Write2Binary()
Dim i As Integer
Dim nFileNum As Integer
Dim sFilename As String

sFilename = "D:\OutputPath\Test.bin"

strBytes = "F3 A1 02 00 04 00 8D 24 44 C3 8C 03 83 49 26 92 B5"
arrBytes = Split(strBytes)

nFileNum = FreeFile

Open sFilename For Binary Lock Read Write As #nFileNum

For i = LBound(arrBytes) To UBound(arrBytes)
    Put #nFileNum, , arrBytes(i)
Next i

Close #nFileNum

End Sub

此代码生成以下二进制文件,当我在十六进制编辑器中打开它时,它看起来像这样:

08 00 02 00 46 33 08 00 02 00 41 31 08 00 02 00 
30 32 08 00 02 00 30 30 08 00 02 00 30 34 08 00 
02 00 30 30 08 00 02 00 38 44 08 00 02 00 32 34 
08 00 02 00 34 34 08 00 02 00 43 33 08 00 02 00 
38 43 08 00 02 00 30 33 08 00 02 00 38 33 08 00 
02 00 34 39 08 00 02 00 32 36 08 00 02 00 39 32 
08 00 02 00 42 35 

这与我要在二进制文件中拥有的内容不同。在十六进制编辑器中打开文件时,我喜欢看到以下内容:

F3 A1 02 00 04 00 8D 24 44 C3 8C 03 83 49 26 92 B5

我该怎么做?

1 个答案:

答案 0 :(得分:3)

您的数据表示要写入二进制文件的字节的十六进制值。 Split产生一个字符串数组,每个元素都是一个十六进制值的字符串表示形式。正如Comintern告诉您的那样,您需要将它们转换为数字。

Put使用Varname参数的类型来确定要写入的长度(字节数),因此在这种情况下,您需要转换为Byte,因此请使用{{ 1}}进行转换。 CByte还需要知道这些值是十六进制,因此请以CByte

开头

全部,您的代码变为

&H