class HeartbeatResponse { int statusCode; // 状态码,1字节无符号 int nextPingTime; // 下次ping时间秒数,2字节无符号 HeartbeatResponse({required this.statusCode, required this.nextPingTime}); @override String toString() { return 'HeartbeatResponse{statusCode: $statusCode, nextPingTime: $nextPingTime}'; } // 反序列化方法 static HeartbeatResponse deserialize(List bytes) { if (bytes.length < 3) { throw FormatException("Invalid HeartbeatResponse length"); } final response = HeartbeatResponse( statusCode: bytes[0], // 状态码,1字节 nextPingTime: (bytes[2] << 8) | bytes[1], // 下次ping时间,2字节小端序 ); return response; } // 序列化方法 static List serialize(HeartbeatResponse response) { final List bytes = []; // 序列化状态码 bytes.add(response.statusCode); // 序列化下次ping时间(2字节小端序) bytes.add(response.nextPingTime & 0xFF); bytes.add((response.nextPingTime >> 8) & 0xFF); return bytes; } }