使用boost :: dynamic_bitset :: to_ulong()的意外结果

时间:2012-09-20 12:36:42

标签: c++ boost

当我尝试使用dynamic_bitset :: to_ulong()将二进制转换为十进制数时,发生了一件奇怪的事情。我的原始号码是1010101,十进制是85。但是,以下代码打印55。我无法弄清楚。我的编译器是MingW。

boost::dynamic_bitset<> db(10,BOOST_BINARY(1010101));
cout<<db.to_ulong()<<endl;  //should be 85.

1 个答案:

答案 0 :(得分:1)

十进制的85是十六进制的0x55。检查你的iostream标志。

#include <iostream>
#include <iomanip>

std::cout << std::dec << n << std::endl;  // formats as decimal