首页 > 解决方案 > 将 bitset<64> 转换为 quint8

问题描述

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

bitset<64>看起来像:

1111001010100101...

我想data看起来像:

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

如果有人可以帮助我实现这一点,将不胜感激。

标签: c++binarybitset

解决方案


如果我对您的理解正确,那么这将完成您的要求:

#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循环语句以使其以您选择的任何字节顺序发出。

关键是在积分值上使用移位运算<<) 。>>


推荐阅读