我正在尝试使用json.push_back调用将64位整数数据推送到JSONNode
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?
最佳答案
由于JavaScript在内部将值编码为64位浮点值(http://ecma262-5.com/ELS5_HTML.htm#Section_8.5),因此无法在JSON中表示64位整数。
因此,您只能使用53位精度(2 ^ 53)。
如果要交换64位整数,则可以使用字符串或将64位整数分成两个32位整数,然后重新组合它们(What is the accepted way to send 64-bit values over JSON?)。
关于c++ - libjson是否支持64位int类型?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16809932/