Я пытаюсь отправить 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 ??
64-битные целые числа не могут быть представлены в JSON, поскольку JavaScript внутренне кодирует значения как 64-битные значения с плавающей запятой (http://ecma262-5.com/ELS5_HTML.htm#Section_8.5).
Таким образом, вы ограничены 53 битами точности (2 ^ 53).
Если вы хотите обменять 64-битные целые числа, вы можете использовать строки или разбить 64-целое число на два 32-битных целых числа, а затем рекомбинировать их (Каков приемлемый способ отправки 64-битных значений через JSON?).
Других решений пока нет …