繁体   English   中英

我的 VS 2022 不能处理超过 32 位的位集

[英]My VS 2022 doesn't handle over than 32 bit bitset

我正在尝试将 45 位二进制数转换为十六进制数,但在编译时出现溢出错误,但在在线 C++ 编译器上应用代码时,它可以正常工作。 我的平台是 X64。 请任何帮助。

int main()
{
    stringstream ss;
    string binary_str("111000000100010010100000110101001000100011000");
    bitset<45> n(binary_str);

    string f;
    ss << hex << n.to_ulong() << endl;  // error happens here 
    f = ss.str();
    cout << f;
    return 0;
}

在在线 C++ 编译器上编译上述代码时,我得到正确的结果,即 OX1c08941a9118。

unsigned long在 MSVC 中是 32 位的。 同样在为 x64 编译时。 你需要unsigned long long来获得 64 位 integer,所以在这种情况下你可以使用to_ullong

ss << hex << n.to_ullong() << endl;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM