数据类型长 - 什么意思是高和低

时间:2016-07-25 20:38:02

标签: json long-integer

我正在使用API​​,并且在某些时候我使用如下条目获取JSONcooldown_complete_timestamp_ms: Long { low: 600206158, high: 342, unsigned: false}

我不知道如何处理这些数据 - 它是什么意思?

2 个答案:

答案 0 :(得分:1)

这不是常规JSON,其中object的值只能是stringnumberobjectarray true false null 。请参阅http://www.json.org/

您使用的API必须使用从JSON派生的内容进行回复。

您正在编写哪种API?

我猜这个API试图模拟/强制一个64位整数,类似于LARGE_INTEGER,一个Win32结构。

您正在查看的值可能是342 * 2^32 + 600206158,换句话说1469479021390

答案 1 :(得分:1)

highlow在此情况下指定长整数的高位和低位。

对于高阶位{{3}和低阶位{}有一个有趣的解释:

  

现在,高/低位是指位或字的位置值。例如,在以10为底的数字中,如果我们有四位数的ABCD,则A位数的位置值为千,B百,C十和D。在二进制中,这是相似的,除了位置值以2的幂增加-您将拥有A八,B四,C二进制和D的数字。

     

高阶位是在给定的位块中具有最高位置值的位。这可以是字节,字,dword或其他任何内容。高阶字是包含高阶位的字;至少需要两个字才能使此有意义。低阶相似,但使用最低有效位值代替。

让我们假设我们的Long有64位。 low是32个低阶位(通常在右侧)的基数10表示,而high是32个高阶位(通常在左侧)的基数10表示。 >

特定的Long表示形式似乎源自here库,该工具可帮助tp在javascript中表示长数字。

Long上阅读源代码对于了解为何选择此表示形式非常有见地,但最重要的是:

// The internal representation of a long is the two given signed, 32-bit values.
// We use 32-bit pieces because these are the size of integers on which
// Javascript performs bit-operations.  For operations like addition and
// multiplication, we split each number into 16 bit pieces, which can easily be
// multiplied within Javascript's floating-point representation without overflow
// or change in sign.

您可以通过toNumber与值进行交互,因为它们已在库中GitHub