数字到二进制的那些坑:大小端、浮点表示、UUID与MD5校验

把后端联调与数据追踪中最常见的进制/二进制话题一次说清:大小端选择、IEEE754浮点、十六进制转写、UUID版本选择与MD5用在何处

优兔GOGO
2025年11月1日
基础与工具
进制转换大小端浮点数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;传输层如果要求高性能,应该以字节流为准;
  • 文档里把样例分成两部分:“人看的可读表示”和“机器用的字节流”。

工具:

我的联调清单

  1. 变量类型与位宽列清楚;
  2. 端序统一,示例给出两端输出;
  3. 浮点提供内存表示的 HEX;
  4. UUID 指定版本与输出格式(带/不带连字符、大小写);
  5. 校验字段说明 MD5 的用途与替代方案;
  6. 文档提供“可复制粘贴”的示例数据。

当这几件事被固定下来,跨语言、跨团队的联调就不再是猜谜游戏,而是照章核对的体力活。


🔗 相关工具