一尘不染

通过JSON发送64位值的可接受方法是什么?

json

我的一些数据是64位整数。我想将它们发送到页面上运行的JavaScript程序。

但是,据我所知,大多数JavaScript实现中的整数都是32位有符号数。

我的两个选择似乎是:

  1. 将值作为字符串发送
  2. 将值作为64位浮点数发送

选项(1)并不完美,但选项(2)似乎不那么完美(数据丢失)。

您如何处理这种情况?


阅读 263

收藏
2020-07-27

共1个答案

一尘不染

似乎这与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];
2020-07-27