小编rkr*_*nka的帖子

结构位填充和LSB/MSB歧义C++

我必须为以下数据包头写一个c ++代码:

原始图片链接,上面JPEG的PNG版本.

这是我为上面的数据包格式编写的结构代码.我想知道uint8_t或uint16_t位字段是否正确

    struct TelemetryTransferFramePrimaryHeader
    {
        //-- 6 Ocets Long --//

        //-- Master Channel ID (2 octets)--//
        uint16_t TransferFrameVersionNumber : 2;
        uint16_t SpacecraftID : 10;
        uint16_t VirtualChannelID : 3;
        uint16_t OCFFlag : 1;

        //-----------------//

        uint8_t MasterChannelFrameCount;
        uint8_t VirtualChannelFrameCount;

        //-- Transfer Frame Data Field Status (2 octets) --//

        uint16_t TransferFrameSecondaryHeaderFlag : 1;
        uint16_t SyncFlag : 1;
        uint16_t PacketOrderFlag : 1;
        uint16_t SegmentLengthID : 2;
        uint16_t FirstHeaderPointer : 11;

        //-----------------//

    };
Run Code Online (Sandbox Code Playgroud)

如何确保在结构中保留LSB - > MSB?

我一直很困惑,我已经尝试过阅读,但最终让我更加困惑.

PS:我使用的是32位处理器.

c c++ embedded struct bit-packing

0
推荐指数
1
解决办法
1459
查看次数

标签 统计

bit-packing ×1

c ×1

c++ ×1

embedded ×1

struct ×1