VBA二进制文件与字节数组

时间:2013-12-05 20:46:49

标签: arrays vba binary byte

我想我理解正确,但我只想仔细检查以确定。假设我使用VBA写一个二进制文件,其中前X个字节代表某个字段,下一个x代表另一个字段,依此类推。现在假设我稍后使用字节数组将该二进制文件读回VBA。假设字节数组中的前x个元素直接与文件中的前x个字节相关是否合理?

我应该从一开始就明白这一点,文件的格式和标题并不是那么重要,我只是想更多地了解读写二进制文件和使用的细节。带有vba的字节数组。我到了那里,我很感激大家的意见。

1 个答案:

答案 0 :(得分:0)

在编写二进制文件时,写入标头以检查给定的字节是否真的与您的格式匹配。使用十六进制编辑器(我使用HxD)查看wave文件,您将看到如下内容:

  

RIFF®... WAVEfmt ........ D ... ...... ......dataà€....

  1. RIFF是容器的标题(资源交换 格式)
  2. 后跟一些字节用于元信息
  3. WAVE是 实际波浪的标题
  4. 然后您可能会想要一些数据 interprete
  5. 以下是两个示例二进制读/写方法(从C#转换为VB.NET)

    Public Shared Sub Write(This As YOUR_TYPE, stream As BinaryWriter)
    stream.Write(FILE_IDENTIFIER)
    stream.Write(FILE_VERSION)
    While True
        stream.Write(/*...*/)
    End While
    End Sub
    
    Public Shared Function read(stream As BinaryReader) As YOUR_TYPE
    If Not Enumerable.SequenceEqual(FILE_IDENTIFIER, stream.ReadBytes(FILE_IDENTIFIER.Length)) Then
        Throw New FormatException("header mismatch")
    End If
    If stream.ReadByte() <> FILE_VERSION Then
        Throw New NotSupportedException("version mismatch")
    End If
    
    Dim result As New YOUR_TYPE()
    While True
        stream.Read(/*...*/)
        End While
    Return result
    End Function