当前位置:  开发笔记 > 编程语言 > 正文

如何使用32位int和4个8位char类型创建一个联合,每个类型都引用32位int的差异切片?

如何解决《如何使用32位int和4个8位char类型创建一个联合,每个类型都引用32位int的差异切片?》经验,为你挑选了3个好方法。

我想创建一个联合,其中最大的成员是32位整数.这将主要写入.然后有四个8位变量,可能是char类型,每个变量都会引用32位整数类型的不同部分:

   union {
   int32 myint;
   char char1 [7:0];
   char char2 [15:8];
   char char3 [23:16];
   char char4 [31:24];
   }

但我不知道如何在C++中这样做.



1> Cecilio Pard..:

这可能有效:

union {
   int32 myint;
   char chars[4];
};



2> 小智..:

我不明白你是否想要一个32位内插器和4个8位变量或一个32位内插器分成4个8位变量,但无论如何你应该尝试这样的事情:

union yourUnion {
    int32 yourInt;
    struct {
        int32 var1 : 8;
        int32 var2 : 8;
        int32 var3 : 8;
        int32 var4 : 8;
    } yourSplitInterger;
};

希望能帮助到你.



3> Danny_ds..:

你可以用这个:

union myUnion {
    int32   myint;
    struct {
        char char1;
        char char2;
        char char3;
        char char4;
    } myChars;
};

或者uint8_t:

union myUnion {
    uint32_t  myint;
    struct {
        uint8_t b1;
        uint8_t b2;
        uint8_t b3;
        uint8_t b4; // or number them in reverse order
    } myBytes;
};

看到这里.


`:8`是多余的
推荐阅读
手机用户2402851155
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有