【发布时间】:2017-08-02 08:51:21
【问题描述】:
让我们考虑以下情况。
Go 例程创建一个字节数组,其中将 Uint64 数字 5577006791947779410 打包成 8 个字节的 Big Endian [77, 101, 130, 33, 7, 252, 253, 82]。
在 JavaScript 代码中,我将这些字节作为Uint8Array 接收。我们知道 JavaScript 目前不支持 Uint64 作为安全的数字类型,并且不能对大于 32 位的整数执行按位运算,所以像 buf[0] << 56 这样的东西永远不会起作用。
那么将这些字节直接解码为数字字符串"5577006791947779410"的过程是什么?
P.S. 我知道有 plenty of libraries 用于在 JavaScript 中处理大整数,但通常它们很大并且提供大量数学运算,我不需要这里。我正在寻找一种简单的现代直接解决方案,用于just 将 BE-packed Uint64 和 Int64 字节解码为数字字符串。你有什么想法吗?
【问题讨论】:
标签: javascript string ecmascript-6 int64 uint64