将bitset <64>转换为quint8

问题描述 投票:1回答:1

我有一个bitset<64>(16位串行和48位时间戳),我想写给quint8 *data

bitset<64>looks像:

1111001010100101...

我希望data看起来像:

data[0] = 11110010
data[1] = 10100101
...

如果有人可以帮助我实现这一点,那将会很感激。

c++ binary bitset
1个回答
1
投票

如果我理解正确,那么这就完成了你的要求:

#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<<>>)。

© www.soinside.com 2019 - 2024. All rights reserved.