gpt4 book ai didi

c++ - 将长度恰好为8的倍数的 '1'和 '0'字符串转换为一定字节数

转载 作者:行者123 更新时间:2023-11-28 00:42:47 25 4
gpt4 key购买 nike

我有一个由 1 和 0 组成的字符串,我用足够多的 0 填充,使其长度可以被 8 整除。我的目标是将这个字符串转换为多个字节,并按照第一个字符 i 的方式对其进行排序读取的是最不重要的位,然后下一个是下一个最不重要的位,依此类推,直到我读取了 8 位,将其保存为一个字节并继续读取字符串,将下一位保存为第二个字节的最不重要的位.

例如,字符串“0101101101010010”的长度为 16,因此它将被转换为两个字节。第一个字节应该是“11011010”,第二个字节应该是“01001010”。

我不确定该怎么做,因为它不像反转字符串那么简单(我需要保持这些字节的顺序)。

感谢任何帮助,谢谢!

最佳答案

您可以向后遍历字符串,但像您建议的那样反转它可能更容易。从那里,您可以一次构建一个字节。嵌套的 for 循环会很好地工作:

unsigned char bytes[8]; // Make sure this is zeroed
for (int i=0, j=0; i<str.length(); j++) {
for (int k=0; k<8; k++, i++) {
bytes[j] >>= 1;
if (str[i] == '1') bytes[j] |= 0x80;
}
}

i 是当前字符串索引,j 是当前字节数组索引,k 计算我们设置了多少位当前字节。如果当前字符为 1,我们设置该位,否则我们不设置它。字节数组无符号很重要,因为我们使用的是右移。

关于c++ - 将长度恰好为8的倍数的 '1'和 '0'字符串转换为一定字节数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17913517/

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