我想读\写一个具有以下结构的二进制文件:
该文件由“记录”组成。每个“记录”具有以下结构:我将以第一条记录为例
- (红色)起始字节:0x5A(始终为 1 字节,固定值 0x5A)
- (绿色)LENGTH 字节:0x00 0x16(总是 2 字节,值可以从“0x00 0x02”变为“0xFF 0xFF”)
- (蓝色) CONTENT:由 LENGTH 字段的十进制值减去 2 表示的字节数。
在这种情况下,LENGHT 字段值为 22(0x00 0x16 转换为十进制),因此 CONTENT 将包含 20 (22 - 2) 个字节。我的目标是逐条读取每条记录,并将其写入输出文件。实际上我有一个读函数和写函数(一些伪代码):
private void Read(BinaryReader binaryReader, BinaryWriter binaryWriter)
{
byte START = 0x5A;
int decimalLenght = 0;
byte[] content = null;
byte[] length = new byte[2];
while (binaryReader.PeekChar() != -1)
{
//Check the first byte which should be equals to 0x5A
if (binaryReader.ReadByte() != START)
{
throw new Exception("0x5A Expected");
}
//Extract the length field value
length = binaryReader.ReadBytes(2);
//Convert the length field to decimal
int decimalLenght = GetLength(length);
//Extract the content field value
content = binaryReader.ReadBytes(decimalLenght - 2);
//DO WORK
//modifying the content
//Writing the record
Write(binaryWriter, content, length, START);
}
}
private void Write(BinaryWriter binaryWriter, byte[] content, byte[] length, byte START)
{
binaryWriter.Write(START);
binaryWriter.Write(length);
binaryWriter.Write(content);
}
如您所见,我已经为 C# 编写了它,但我真的不知道如何使用 C++ 编写它。有人可以指出我正确的方向吗?