arrays - 为什么从 VBA 写入文件的字节会为每个字节添加 1100?

标签 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 写入文件(全部采用十六进制)

我的代码有什么问题吗?

最佳答案

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

关于arrays - 为什么从 VBA 写入文件的字节会为每个字节添加 1100?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13844083/

相关文章:

Javascript 将输入插入数组会导致多个数组而不是一个

java - 双数组方法错误: Incompatible types: possible lossy conversion from double to int

arrays - Lua 不会超过表中的 'nil'

arrays - 删除工作表后数组变量不保存值

vba - Excel VBA-错误处理和字符串搜索

sql - 使用 Excel VBA 将 CSV 转换为 MS Access 数据库内的表

excel - 查找日期,返回前 5 天的总和

excel - 如何在excel VBA中读取目录中的某些文件

excel - WorksheetFunction.CountIfs 给我一个类型不匹配错误(错误 #13)

excel - 根据单元格值插入多个形状