为什么写入VBA文件的字节为每个字节添加1100?
我试图复制一个图像作为字节数组在vba
的文件。
该文件的前3个字节表示为一个字节数组:
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
写入文件(全部以hex
)
我的代码有什么问题?
因为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
如果我忽视定义types(或者我没有Option Explicit ),那么它变成了一个变体,然后是任何人都会猜测会出现什么,因为变体数据types包含一个types代码。 (在我的情况下,我得到02 00 23 00 02 00 21 00 02 00 2f 00
)