gpt4 book ai didi

c++ - C++ 中的字符到二进制的转换 一次两个字符以获得 16 位二进制形式

转载 作者:行者123 更新时间:2023-11-27 23:11:43 24 4
gpt4 key购买 nike

您好,我想一次将字符串中的两个字符转换为二进制?我如何通过应用简单的算术(即创建我自己的函数?)来做到这一点

例如:我们的字符串是=hello world:

期望的输出(一次两个字符):

 he       // need binaryform of 0's and 1's (16 bits for 2 characters 'h' and 'e'
ll // similarly
o(space) // single space also counts as a character with 8 zero bit in binary.
wo
rl
d(space) // space equals a character again with 8 zero bits

如何处理。我不想要介于两者之间的任何 ascii。直接从字符到二进制...这可能吗?

最佳答案

如果您正在寻找一种文本表示字符二进制表示的方法,那么这里有一个小示例来说明如何做到这一点:

一个将 c 的二进制表示打印到 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

如果您想将字符对的二进制数存储在 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);
}

关于c++ - C++ 中的字符到二进制的转换 一次两个字符以获得 16 位二进制形式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19844122/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com