我正在使用API,并且在某些时候我使用如下条目获取JSON
:
cooldown_complete_timestamp_ms: Long { low: 600206158, high: 342, unsigned: false}
我不知道如何处理这些数据 - 它是什么意思?
答案 0 :(得分:1)
这不是常规JSON,其中object
的值只能是string
,number
,object
,array
, true
, false
或 null
。请参阅http://www.json.org/。
您使用的API必须使用从JSON派生的内容进行回复。
您正在编写哪种API?
我猜这个API试图模拟/强制一个64位整数,类似于LARGE_INTEGER
,一个Win32结构。
您正在查看的值可能是342 * 2^32 + 600206158
,换句话说1469479021390
。
答案 1 :(得分:1)
high
和low
在此情况下指定长整数的高位和低位。
对于高阶位{{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。