← 返回文章库

64 位有符号整数怎样经 JSON 保存而不丢末位

最后更新 2026-10-23
⏱ 约 6 分钟 🟡 涉接线/强电

通用JSON数值经JavaScript Number处理时不能保证任意64位整数精确。需要把完整整数作为十进制或十六进制字符串传递,并在精确整数层解释。

本文由器赋开物编辑整理,AI 辅助撰写。下面输入是合成对照,用于复算公式或协议规则,没有连接真实设备完成现场验证。

本次具体要判断什么?

示例最大64位有符号正数为9223372036854775807。工具导出以字符串保存,避免下载记录把它改成一个近似数;这与计算器显示用多少小数位无关。

先保存可复算的对照输入

打开补码有符号整数解释工具,把默认值改为下表场景。文字或字节过长时这里只展示摘要,完整原始输入在附件中。

输入项目 对照值 单位或格式
非负原始码 7FFFFFFFFFFFFFFF HEX
解释位宽 64 bit

模型或规则得到什么结果?

最高位为1时,有符号值=原值−2^位宽

结果项目 对照输出 单位
补码有符号值 9223372036854775807 按模型解释
同一原始码无符号值 9223372036854775807 按模型解释
选定位宽二进制 0111111111111111111111111111111111111111111111111111111111111111 按模型解释

下载本例完整输入、输出与核验记录 JSON。64 位整数按字符串保留,未四舍五入的计算值保存在附件;设备、仪器和实际结论栏目留空,不把预测当测量。

怎样核对和排查?

核对设备、服务端、JSON解析和页面四层的数据类型。用最大正数和全1负数作往返样例,保存原始文本,再检查解析前后的每一位。若上游已经输出舍入后的Number,页面不能靠补零或BigInt转换恢复原值。

哪些做法容易误判?

字符串格式也需要规定进制、符号和位宽。把HEX字符串当十进制读取,或在导出时再次Number转换,都会破坏此前保留精度的工作。

什么条件才足以接受结论?

导出、重新读取与独立精确整数实现结果一致,边界末位不变。记录说明字符串承载整数的约定,不能只用一个较小样本证明整个64位范围安全。

适用范围与相关资料

继续查阅相关原理或其他工具。使用不同工具时先核对输入单位、模型和协议版本,避免把一个场景的结论直接套到另一个场景。

不支持原码、反码或任意浮点格式;输入为整数值,不自动判断多字节数据的传输字节序。

依据:SEI CERT C:整数类型与位操作。实现检查覆盖了独立算例和拒绝路径;工具自身通过测试不能替代你对硬件、SDK版本和业务规则的核验。

继续处理相邻任务

📄 来源 / 自校链接

本文为公开资料整理,非亲测。关键参数与代码请结合实物与下列官方来源验证。

内容有错、看不懂、或想看下一期?告诉我们 →

本文为公开资料的学习整理,非亲测。涉接线/花钱/合规的步骤请结合实物与官方最新资料验证,风险自负。见免责声明。

这个页面有问题?

提交时会附带当前页面地址和浏览器信息,帮助我们定位问题。不填联系方式即为匿名。