我正在阅读在 c++ 中将 bitset 转换为 int的问题,并想,嘿,这行不通,我已经尝试过了。但后来我开始尝试,很快我发现:
#include <bitset>
#include <iostream>
int main()
{
std::bitset<31> b31(-1);
std::bitset<32> b32(-1);
std::cout<<static_cast<int>(b31.to_ulong())<<std::endl;
std::cout<<static_cast<int>(b32.to_ulong())<<std::endl;
return 0;
}
给出输出
2147483647
-1
那么,如何将小于 32 的位集转换为有符号整数?
澄清:我想用构造保留的位集时使用的 10 基值转换回带符号的 int。“将签名的整数存储在位集中”
我已经在 win 7 上使用 gcc 4.6.2、mingw32 进行了尝试,并且使用 c-style cast 获得了相同的结果(int)