我想我理解正确,但我只想仔细检查以确定。假设我使用VBA写一个二进制文件,其中前X个字节代表某个字段,下一个x代表另一个字段,依此类推。现在假设我稍后使用字节数组将该二进制文件读回VBA。假设字节数组中的前x个元素直接与文件中的前x个字节相关是否合理?
我应该从一开始就明白这一点,文件的格式和标题并不是那么重要,我只是想更多地了解读写二进制文件和使用的细节。带有vba的字节数组。我到了那里,我很感激大家的意见。
答案 0 :(得分:0)
在编写二进制文件时,写入标头以检查给定的字节是否真的与您的格式匹配。使用十六进制编辑器(我使用HxD)查看wave文件,您将看到如下内容:
RIFF®... WAVEfmt ........ D ... ...... ......dataà€....
以下是两个示例二进制读/写方法(从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