如何将位序列放入字节(C/C++)

Sma*_*aug 5 c c++ byte sequence bit

我有几个整数,例如(在二进制表示中):

00001000,01111111,10000000,00000001

我需要将它们按顺序放入字节数组(字符串),而不是前导零,如下所示:

10001111 11110000 0001000

我知道必须通过使用<<,>>进行位移并使用二进制或|来完成.但我找不到正确的算法,你能建议最好的方法吗?

我需要放在那里的整数是无符号长long整数,因此一个长度可以是1到8个字节(64位).

jke*_*ian 1

毫无疑问还有其他方法可以做到这一点,但我可能会选择最简单的:

std::vector<unsigned char> integers; // Has your list of bytes
integers.push_back(0x02);
integers.push_back(0xFF);
integers.push_back(0x00);
integers.push_back(0x10);
integers.push_back(0x01);
std::string str;                     // Will have your resulting string
for(unsigned int i=0; i < integers.size(); i++)
    for(int j=0; j<8; j++)
        str += ((integers[i]<<j) & 0x80 ? "1" : "0");
std::cout << str << "\n";
size_t begin = str.find("1");
if(begin > 0) str.erase(0,begin);
std::cout << str << "\n";
Run Code Online (Sandbox Code Playgroud)

在你提到你正在使用长整型或其他什么之前我写了这篇文章,但这实际上并没有改变太多。掩码和 j 循环变量需要更改,但除此之外,上面的方法应该可以工作。