我的一些数据是64位整数。我想将它们发送到页面上运行的JavaScript程序。
但是,据我所知,大多数JavaScript实现中的整数都是32位有符号数。
我的两个选择似乎是:
选项(1)并不完美,但选项(2)似乎不那么完美(数据丢失)。
您如何处理这种情况?
似乎这与JSON无关紧要,而与Javascript本身有关。您打算如何处理这些数字?如果这只是魔术令牌,您以后需要将其传递回网站,则一定要使用包含该值的字符串。如果实际上必须对值进行算术运算,则可以编写自己的Java例程以进行64位算术运算。
可以用Javascript(和JSON)表示值的一种方法是将数字分成两个32位值,例如。
[ 12345678, 12345678 ]
要将一个64位值分成两个32位值,请执行以下操作:
output_values[0] = (input_value >> 32) & 0xffffffff; output_values[1] = input_value & 0xffffffff;
然后将两个32位值重新组合为64位值:
input_value = ((int64_t) output_values[0]) << 32) | output_values[1];