Arrays 为什么从VBA写入文件的字节会给每个字节增加1100?

Arrays 为什么从VBA写入文件的字节会给每个字节增加1100?,arrays,excel,vba,byte,jpeg,Arrays,Excel,Vba,Byte,Jpeg,我正在尝试将图像作为字节数组复制到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写入文件(全部在he

我正在尝试将图像作为字节数组复制到
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
写入文件(全部在
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
然后我得到了您期望的字节数
23212f


如果我忽略了定义类型(或者我没有显式的选项),那么它就变成了一个变量,然后任何人都可以猜测会出现什么,因为变量数据类型包含一个类型代码。(在我的例子中,我得到
02 00 23 00 02 00 21 00 02 00 2f 00

它不编译吗?具体来说,我不知道您的第一行实际需要什么,因为它根本不在VBA中编译。