libjson是否支持64位int类型?

时间:2013-05-29 09:14:53

标签: c++ json libjson

我正在尝试使用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 ??

1 个答案:

答案 0 :(得分:3)

64位整数无法用JSON表示,因为JavaScript内部将值编码为64位浮点值(http://ecma262-5.com/ELS5_HTML.htm#Section_8.5)。

因此,您的精度限制为53位(2 ^ 53)。

如果要交换64位整数,可以使用字符串或将64位整数分成两个32位整数,然后重新组合它们(What is the accepted way to send 64-bit values over JSON?)。