equal & ==

Java中equal与==的探讨

在这里插入图片描述

struct Hearder { uint32_t DDS_id; uint32_t platform_id; // 发送方平台ID (0-524287) uint32_t instance_id; // 发送方实例ID (1-9999) uint32_t data_length; // 数据长度 (0-65535) uint16_t total_pack; // 总包数 uint16_t pack_number; // 包序号 uint16_t data_validLength; // 数据有效长度 char md5_ID[32]; // 文件md5值,固定32字节 // 序列化为字符串 std::string SerializeByte() const { std::string result; // 添加所有成员变量的数据 result.append(reinterpret_cast<const char*>(&DDS_id), sizeof(DDS_id)); result.append(reinterpret_cast<const char*>(&platform_id), sizeof(platform_id)); result.append(reinterpret_cast<const char*>(&instance_id), sizeof(instance_id)); result.append(reinterpret_cast<const char*>(&data_length), sizeof(data_length)); result.append(reinterpret_cast<const char*>(&total_pack), sizeof(total_pack)); result.append(reinterpret_cast<const char*>(&pack_number), sizeof(pack_number)); result.append(reinterpret_cast<const char*>(&data_validLength), sizeof(data_validLength)); result.append(md5_ID, sizeof(md5_ID)); return result; } bool DeserializeByte(const std::string& byteStr) { // 检查数据长度是否足够 size_t dataSize = sizeof(Hearder); if (byteStr.size() < dataSize) { return false; // 数据不足 } size_t offset = 0; // 解析所有成员变量 memcpy(&DDS_id, byteStr.data() + offset, sizeof(DDS_id)); offset += sizeof(DDS_id); memcpy(&platform_id, byteStr.data() + offset, sizeof(platform_id)); offset += sizeof(platform_id); memcpy(&instance_id, byteStr.data() + offset, sizeof(instance_id)); offset += sizeof(instance_id); memcpy(&data_length, byteStr.data() + offset, sizeof(data_length)); offset += sizeof(data_length); memcpy(&total_pack, byteStr.data() + offset, sizeof(total_pack)); offset += sizeof(total_pack); memcpy(&pack_number, byteStr.data() + offset, sizeof(pack_number)); offset += sizeof(pack_number); memcpy(&data_validLength, byteStr.data() + offset, sizeof(data_validLength)); offset += sizeof(data_validLength); // 解析Md5 memcpy(md5_ID, byteStr.data() + offset, sizeof(md5_ID)); offset += sizeof(md5_ID); return true; } // 测试序列化和反序列化功能 static bool TestSerializeDeserializeByte() { // 创建并初始化测试数据 Hearder original; original.DDS_id = 1001; original.platform_id = 2001; original.instance_id = 3001; original.data_length = 1024; original.total_pack = 2; original.pack_number = 1; original.data_validLength = 1000; strncpy(original.md5_ID, "658e8dc0bf8b9a09b36994abf9242099", sizeof(original.md5_ID)); // 序列化 std::string byteStr = original.SerializeByte(); // 反序列化 Hearder restored; bool success = restored.DeserializeByte(byteStr); if (!success) { std::cout << "反序列化失败!" << std::endl; return false; } // 比较原始数据和恢复的数据是否一致 bool isEqual = true; isEqual &= (original.DDS_id == restored.DDS_id); isEqual &= (original.platform_id == restored.platform_id); isEqual &= (original.instance_id == restored.instance_id); isEqual &= (original.data_length == restored.data_length); isEqual &= (original.total_pack == restored.total_pack); isEqual &= (original.pack_number == restored.pack_number); isEqual &= (original.data_validLength == restored.data_validLength); isEqual &= (memcmp(original.md5_ID, restored.md5_ID, sizeof(original.md5_ID)) == 0); std::cout << "测试结果: " << (isEqual ? "成功" : "失败") << std::endl; return isEqual; } }; 请帮我给每行代码加上注释
09-10
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值