我正在尝试将图像作为字节数组复制到 vba
中的文件。
文件的前三个字节,表示为字节数组:
Dim arr(3) As Byte arr = {23,21,2f}
从数组复制到新文件的代码是:
Open "try444.jpg" For Binary As #1
For cnt = 1 To UBound(arr)
Put #1, LOF(1) + 1, arr(cnt)
Next
但它会将 1100 2311 0023 1100 2111 002f 1100
写入文件(全部采用十六进制
)
我的代码有什么问题吗?
最佳答案
因为 arr 正在某处被重新定义。如果我将该过程编写为单个函数:
Option Explicit
Sub test()
Dim cnt As Long
Dim arr(3) As Byte
arr(1) = &H23
arr(2) = &H21
arr(3) = &H2F
Open "try444.jpg" For Binary As #1
For cnt = 1 To UBound(arr)
Put #1, LOF(1) + 1, arr(cnt)
Next
Close #1
End Sub
然后我得到的正是您期望的字节23 21 2F
如果我忽略定义类型(或者我没有Option Explicit),那么它就会变成一个变体,然后任何人都会猜测会出现什么,因为变体数据类型包括一个键入代码。 (在我的例子中,我得到02 00 23 00 02 00 21 00 02 00 2f 00
)
关于arrays - 为什么从 VBA 写入文件的字节会为每个字节添加 1100?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13844083/