进制转换大小端浮点数UUIDMD5校验
数字到二进制的那些坑:大小端、浮点表示、UUID与MD5校验
如果你也遇到过“明明同一个值,二进制就是对不上”的窘境,大概率是没有把大小端、位宽与编码路径钉死。我把最常用的几件事放在一起整理,方便快速自查。
整数与浮点:先确认位宽,再确认端序
- 整数:short/int/long 的位宽要在文档明确(16/32/64 位)。
- 端序:网络序通常指大端(Big Endian),很多本地系统默认小端(Little Endian)。跨语言时要显式选择。
- 浮点:遵循 IEEE 754,float 32 位、double 64 位。浮点转十六进制时,别用“字符串转十六进制”的思路,要按内存表示来。
工具:
十六进制与二进制转写:显示只是“视图”
- 十六进制常用来展示二进制,但要清楚这是“视图”,真正的序列化/反序列化要靠明确的字节序与位宽规则。
- 在接口文档里,建议同时放二进制(HEX)与十进制的对照表,降低误读。
UUID 的版本选择:生成策略≠随机强度
- v1:时间+节点信息,可排序,但暴露时间特征;
- v4:随机数,最常用;
- v3/v5:名字空间+哈希,适合“相同输入→相同输出”;
- v6/v7:新版本,兼顾有序与分布特性,具体看依赖库支持度。
工具:
MD5 的位置:校验一致性,不做安全
- MD5 常被用来做“快速一致性校验”(文件、片段),但已不适合作为安全哈希算法;
- 真正的安全场景请用 SHA-256/512 或者签名算法;
- 在接口层面,用 MD5 做去重/缓存键是常见的工程实践,但要知道它不是“安全屏障”。
工具:
JSON 与二进制同屏:别混淆“展示层”与“传输层”
- JSON 层展示可用 Base64/HEX;传输层如果要求高性能,应该以字节流为准;
- 文档里把样例分成两部分:“人看的可读表示”和“机器用的字节流”。
工具:
我的联调清单
- 变量类型与位宽列清楚;
- 端序统一,示例给出两端输出;
- 浮点提供内存表示的 HEX;
- UUID 指定版本与输出格式(带/不带连字符、大小写);
- 校验字段说明 MD5 的用途与替代方案;
- 文档提供“可复制粘贴”的示例数据。
当这几件事被固定下来,跨语言、跨团队的联调就不再是猜谜游戏,而是照章核对的体力活。