4

我正在尝试将图像作为字节数组复制到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

我的代码有什么问题?

4

1 回答 1

5

因为 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

于 2012-12-12T17:20:49.180 回答