4

イメージをバイト配列としてファイルにコピーしようとしています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

コードの何が問題になっていますか?

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 に答える