如果您正在寻找一种以文本方式表示字符的二进制表示的方法,那么这里有一个小例子来说明如何做到这一点:
c
一个打印to二进制表示的小函数std::cout
(仅适用于标准 ASCII 字母):
void printBinary(char c) {
for (int i = 7; i >= 0; --i) {
std::cout << ((c & (1 << i))? '1' : '0');
}
}
像这样使用它(只会打印出成对的字符):
std::string s = "hello "; // Some string.
for (int i = 0; i < s.size(); i += 2) {
printBinary(s[i]);
std::cout << " - ";
printBinary(s[i + 1]);
std::cout << " - ";
}
输出:
01101000 - 01100101 - 01101100 - 01101100 - 01101111 - 00100000 -
编辑:
实际上,std::bitset
只需要使用它:
std::string s = "hello "; // Some string.
for (int i = 0; i < s.size(); i += 2) {
std::cout << std::bitset<8>(s[i]) << " ";
std::cout << std::bitset<8>(s[i + 1]) << " ";
}
输出:
01101000 01100101 01101100 01101100 01101111 00100000
如果您想将字符对的二进制数存储在 a 中std::vector
,如评论中所述,则可以这样做:
std::vector<std::string> bitvec;
std::string bits;
for (int i = 0; i < s.size(); i += 2) {
bits = std::bitset<8>(s[i]).to_string() + std::bitset<8>(s[i + 1]).to_string();
bitvec.push_back(bits);
}