我无法将16位std :: string转换为可以保存字符串的确切二进制数字的int值。我一直在用的atoi和bitset的插科打诨,但它们转换成deciamls或起飞前导零是有办法做到这一点在二进制表示中将二进制std :: string转换为int
std::string str = "0011101100010101";
int num = 0;
.
.
.
num = 0011101100010101 // now equals
我无法将16位std :: string转换为可以保存字符串的确切二进制数字的int值。我一直在用的atoi和bitset的插科打诨,但它们转换成deciamls或起飞前导零是有办法做到这一点在二进制表示中将二进制std :: string转换为int
std::string str = "0011101100010101";
int num = 0;
.
.
.
num = 0011101100010101 // now equals
使用std :: bitset的
std::string str = "0011101100010101";
auto number = static_cast<uint16_t>(std::bitset<16>{ str }.to_ulong());
或者使用文字如果你不需要一个字符串
uint16_t b = 0b0011101100010101;
只要使用'的std :: bitset' [转换二进制格式的字符串为int,在C] – Slava
可能的复制(https://stackoverflow.com/questions/2343099/转换二进制格式的字符串对我nt-in-c) – NineBerry
@NineBerry在C++中,它可以做得更简单,明确编写一个循环 – Slava