将 bitset<64> 转换为 quint8
Convert bitset<64> to quint8
我有一个 bitset<64>
(16 位串行和 48 位时间戳),我想将其写入 quint8 *data
。
当 bitset<64>
看起来像:
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(<<
或>>
)。
我有一个 bitset<64>
(16 位串行和 48 位时间戳),我想将其写入 quint8 *data
。
当 bitset<64>
看起来像:
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(<<
或>>
)。