std::string 转2进制
时间: 2023-11-14 07:05:47 浏览: 190
以下是将 std::string 转换为二进制的示例代码:
```c++
#include <iostream>
#include <bitset>
int main() {
std::string str = "Hello, world!";
std::bitset<8> bits;
for (const char& c : str) {
bits = std::bitset<8>(c);
std::cout << bits << " ";
}
return 0;
}
```
输出:
```
01001000 01100101 01101100 01101100 01101111 00101100 00100000 01110111 01101111 01110010 01101100 01100100 00100001
```
在这个示例中,我们使用 std::bitset 将每个字符转换为 8 位二进制表示。请注意,这里使用的是 ASCII 编码。如果您需要使用其他编码,需要进行适当的修改。
相关问题
将16进制的std::string 转2进制
可以使用以下函数将16进制的std::string转换为2进制:
```cpp
#include <string>
#include <bitset>
std::string hexToBin(const std::string& hexStr) {
std::string binStr;
for (const char& ch : hexStr) {
std::bitset<4> bits(ch);
binStr += bits.to_string();
}
return binStr;
}
```
这个函数将每个16进制字符转换为一个4位二进制字符串,然后将所有的二进制字符串连接成一个长的二进制字符串。
例如,如果输入的16进制字符串是"2A",那么输出的二进制字符串将是"00101010"。
std::string hex_string1 = "FFFFFFFFFFFFFFFB"; unsigned int hex_num1; std::stringstream ss1; ss1 << std::hex<< hex_string1; ss1 >> hex_num1; std::cout << hex_num1 << std::endl; std::string hex_string2 = "FFFFFFFFFFFFFFFB"; unsigned int hex_num2; std::stringstream ss2; ss2 << std::hex << hex_string2; ss2 >> hex_num2; std::cout << hex_num2 << std::endl;
这段代码的作用是将十六进制字符串转换为无符号整型数并输出。但是,代码中的十六进制字符串似乎存在问题,它包含了一个不可见的 Unicode 字符(U+202D)。因此,如果直接复制粘贴这段代码,可能会导致编译错误或运行时错误。
如果将十六进制字符串中的不可见字符去掉,代码可以正常运行。例如,以下是一个没有不可见字符的版本:
```
std::string hex_string1 = "FFFFFFFFFFFFFFFB";
unsigned int hex_num1;
std::stringstream ss1;
ss1 << std::hex << hex_string1;
ss1 >> hex_num1;
std::cout << hex_num1 << std::endl;
std::string hex_string2 = "FFFFFFFFFFFFFFFB";
unsigned int hex_num2;
std::stringstream ss2;
ss2 << std::hex << hex_string2;
ss2 >> hex_num2;
std::cout << hex_num2 << std::endl;
```
这段代码会输出两个相同的数值:18446744073709551611。
阅读全文