0x9*_*x90 4 arrays excel vba byte jpeg
我试图将图像作为字节数组复制到文件中vba.
文件的前三个字节,表示为字节数组:
Dim arr(3) As Byte arr = {23,21,2f}
Run Code Online (Sandbox Code Playgroud)
从数组复制到新文件的代码是:
Open "try444.jpg" For Binary As #1
For cnt = 1 To UBound(arr)
Put #1, LOF(1) + 1, arr(cnt)
Next
Run Code Online (Sandbox Code Playgroud)
但它写入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
Run Code Online (Sandbox Code Playgroud)
然后我得到你期望的字节 23 21 2F
如果我忽略了定义类型(或者我没有Option Explicit)那么它就变成了一个变体,然后由于变量数据类型包含一个类型代码,所以任何人都会猜测会出现什么.(在我的情况下,我得到02 00 23 00 02 00 21 00 02 00 2f 00)