为什么写入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

Interesting Posts