deserialize static method
从字节数组反序列化
Implementation
static RtcData deserialize(Uint8List bytes) {
if (bytes.length < HEADER_SIZE) {
throw ArgumentError('字节数组长度不足');
}
final buffer = ByteData.sublistView(bytes);
int offset = 0;
// 读取magic
final magic = buffer.getInt32(offset, Endian.big);
offset += 4;
// 读取version
final version = buffer.getInt16(offset, Endian.big);
offset += 2;
// 读取size
final size = buffer.getInt16(offset, Endian.big);
offset += 2;
// 读取cmdType
final cmdType = buffer.getInt32(offset, Endian.big);
offset += 4;
// 读取reserved
final reserved = Uint8List(20);
for (int i = 0; i < 20; i++) {
reserved[i] = buffer.getUint8(offset + i);
}
offset += 20;
// 读取data
final dataLength = bytes.length - HEADER_SIZE;
final data = Uint8List(dataLength);
data.setRange(0, dataLength, bytes, offset);
return RtcData._internal(
magic: magic,
version: version,
size: size,
cmdType: cmdType,
reserved: reserved,
data: data,
);
}