当我尝试使用dynamic_bitset :: to_ulong()将二进制转换为十进制数时,发生了一件奇怪的事情。我的原始号码是1010101,十进制是85。但是,以下代码打印55。我无法弄清楚。我的编译器是MingW。
boost::dynamic_bitset<> db(10,BOOST_BINARY(1010101));
cout<<db.to_ulong()<<endl; //should be 85.
答案 0 :(得分:1)
十进制的85是十六进制的0x55。检查你的iostream标志。
#include <iostream>
#include <iomanip>
std::cout << std::dec << n << std::endl; // formats as decimal