字节数据解析

问题描述

嗨,我需要解析api响应的字节数据,数据是

version#2

有如下某些规则可根据api提供程序解析数据

A前两个字节([0-2]-SHORT或int16)表示消息中的数据包数量

B接下来的两个字节([2-4]-SHORT或int16)表示第一个数据包的长度(字节数)。

C下一个字节序列([4-4 + B])是引号包。

D接下来的两个字节([4 + B-4 + B + 2]-SHORT或int16)表示第二个数据包的长度(字节数)。

C下一个字节序列([4 + B + 2-4 + B + 2 + D])是下一个报价包。

请有人帮助我如何根据dart中的这些规则解析此数据。我被困住了,谢谢你的帮助

解决方法

首先,您需要将整数列表转换为字节列表:

final byteList = Uint8List.fromList(responseList);

然后,您需要从该字节列表中创建一个ByteData

final byteData = ByteData.view(byteList.buffer);

然后,您可以解析各种字节偏移量所需的各种字节,短裤,整数或多头。例如:

final packetNum = byteData.getUint16(0);

final firstPacketLength = byteData.getUint16(2);
final firstPacketView = ByteData.sublistView(byteData,4,4 + firstPacketLength);
// Do whatever you need for that packet

final secondPacketPos = 4 + firstPacketLength;
final secondPacketLength = byteData.getUint16(secondPacketPos),final secondPacketView = ByteData.sublistView(byteData,secondPacketPos + 2,4 + secondPacketLength);
// Do whatever you need for the saecond packet