std :: string stream以二进制格式解析数字

时间:2016-05-16 09:47:11

标签: c++ c++11 binary format stringstream

我需要解析包含二进制格式数字的0b01101101 ,例如:

std::string number = "0xff";
number.erase(0, 2);
std::stringstream sstream(number);
sstream << std::hex;
int n;
sstream >> n;

我知道我可以使用std::hex格式说明符来解析十六进制格式的数字。

{{1}}

二进制格式是否有相同的东西?

2 个答案:

答案 0 :(得分:10)

您可以使用std::bitset string constructor并将bistet转换为数字:

std::string number = "0b101";
//We need to start reading from index 2 to skip 0b
//Or we can erase that substring beforehand
int n = std::bitset<32>(number, 2).to_ulong();
//Be careful with potential overflow

答案 1 :(得分:-1)

您可以尝试使用std::bitset

例如:

跳过两个第一个字节0b

#include <bitset>
...
std::string s = "0b0111";
std::bitset<4>x(s,2); //pass string s to parsing, skip first two signs
std::cout << x;

char a = -20;    
std::bitset<8> x(a);
std::cout << x;

short b = -427;
std::bitset<16> y(c);
std::cout << y;