我有一个bitset<64>
(16位串行和48位时间戳),我想写给quint8 *data
。
当bitset<64>
looks像:
1111001010100101...
我希望data
看起来像:
data[0] = 11110010
data[1] = 10100101
...
如果有人可以帮助我实现这一点,那将会很感激。
如果我理解正确,那么这就完成了你的要求:
#include <iostream>
#include <bitset>
int main()
{
std::bitset<64> bits64{0b0111101111011001110011010101110001111011110110011100110101011100};
/*
01111011
11011001
11001101
01011100
01111011
11011001
11001101
01011100
*/
for (auto i = 7; i >= 0 ; i--)
std::cout << std::bitset<8>{bits64.to_ullong() >> (i * 8)} << std::endl;
return 0;
}
输出:
01111011
11011001
11001101
01011100
01111011
11011001
11001101
01011100
您可以更改for
循环语句,使其以您选择的任何字节顺序发出。
关键是在积分值上使用the shift operator(<<
或>>
)。