【发布时间】:2011-06-25 21:24:57
【问题描述】:
为什么bitset以相反的顺序存储位?经过多次挣扎,我终于写出了这个binary_to_dec。可以简化吗?
int binary_to_dec(std::string bin)
{
std::bitset<8> bit;
int c = bin.size();
for (size_t i = 0; i < bin.size(); i++,c--)
{
bit.set(c-1, (bin[i]-'0' ? true : false));
}
return bit.to_ulong();
}
【问题讨论】:
-
例如:
std::string bin = "1011"但 bitset 要求它是有序的"1101" -
bitset 不以“反向”顺序存储位。但是,您的输入字符串确实如此。
-
bitset不“需要”任何东西!它基本上只是一个数组,to_ulong()只是计算bit[0]*2^0 + bit[1]*2^1 + bit[2]*2^2 + ..." (where^` 表示“to-the-power-of”)。