Поддерживает ли libjson 64-битные типы int?

Я пытаюсь отправить 64-битные целочисленные данные в JSONNode с помощью вызова json.push_back

    uint64_t myHigh = 0x10;
uint64_t myLow = 0x12;
uint64_t myFinal = 0;myFinal = (myHigh << 32) | myLow ;

std::cout << "val = 0x" << std::hex << myFinal << "\n";-----(1)
JSONNode jvData;

jvData.push_back(JSONNode("value",myFinal));
std::cout<<jvData.write();--------------------------(2)

Cout (1) дает значение 0xa0000000c
Cout (2) показывает значение 12.

Я ожидаю, что значение cout (2) будет 42949672972, но, похоже, не работает должным образом

Json поддерживает 64-битный Int ??

2

Решение

64-битные целые числа не могут быть представлены в JSON, поскольку JavaScript внутренне кодирует значения как 64-битные значения с плавающей запятой (http://ecma262-5.com/ELS5_HTML.htm#Section_8.5).

Таким образом, вы ограничены 53 битами точности (2 ^ 53).

Если вы хотите обменять 64-битные целые числа, вы можете использовать строки или разбить 64-целое число на два 32-битных целых числа, а затем рекомбинировать их (Каков приемлемый способ отправки 64-битных значений через JSON?).

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]