首页 > 其他分享 >union存取低高位

union存取低高位

时间:2024-05-23 09:29:50浏览次数:22  
标签:高位 union 数据类型 传递 ._ 存取 uint32

联合体类型,变量成员共用同一内存,同一时刻只能保存一个成员的数据。

以1个4字节数据,传递r\g\b为例

#include<stdint.h>
#include<iostream>

int main()
{
    uint32_t myV;    //用于模拟值传递

    //写
    {
        union
        {
            struct
            {
                uint32_t r : 8;                //注意与“要传递的值”同类型,防止新开辟1个字节造成的位不连续
                uint32_t g : 8;
                uint32_t b : 8;
            }_s;
            uint32_t v = 0;                    //要传递的值
        }_u;

        _u._s.r = 120;
        _u._s.g = 130;
        _u._s.b = 140;
        std::cout << _u.v << std::endl;
        myV = _u.v;
    }

    //读
    {
        union
        {
            struct
            {
                uint32_t myR : 8;
                uint32_t myG : 8;
                uint32_t myB : 8;
            }myS;
            uint32_t rgb = 0;
        }myU;
        //模拟值传递
        myU.rgb = myV;    
        //获取r\g\b
        unsigned char r1 = myU.myS.myR;
        unsigned char g1 = myU.myS.myG;
        unsigned char b1 = myU.myS.myB;
        std::cout << (int)r1 << " " << (int)g1 << " " << (int)b1 << std::endl;
    }
}

数组、结构体、联合体、枚举类型、类型转换 - 夕西行 - 博客园 (cnblogs.com)

高数据类型存取低数据类型,如int存储uchar - 夕西行 - 博客园 (cnblogs.com)

标签:高位,union,数据类型,传递,._,存取,uint32
From: https://www.cnblogs.com/xixixing/p/18207641

相关文章

  • c++ union
    在C++中,`union`是一种特殊的数据结构,它允许在同一内存空间中存储不同类型的数据。`union`允许您定义一个变量,但这个变量可以存储多种不同类型的值,而不是只能存储一种类型的值。在任何给定时间,`union`中只有一个成员可以有值,所有其他成员都将保持未定义的状态。`union`的声......
  • php使用mysql-text字段存取json字符串
    PHP保存时过滤掉双引号&单引号&tabfunctionformartJsonString($jsonString=''){ $jsonString=str_replace("'","",$jsonString); $jsonString=str_replace('\"',"",$jsonString); $jsonString=st......
  • union 和union all 使用区别
    union和unionall把查询user表前5条数据查询user表数据从第7条数据开始,查询两条   通过union来把两个sql中的数据合并到一张表中,只查询出一条数据,会把重复的数据去掉 通过unionall查询出现出了两条数据,不会去重 ......
  • 内存取证-volatility工具的使用
    0x00volatility介绍Volatility是一款非常强大的内存取证工具,它是由来自全世界的数百位知名安全专家合作开发的一套工具,可以用于windows,linux,macosx,android等系统内存取证。Volatility是一款开源内存取证框架,能够对导出的内存镜像进行分析,通过获取内核数据结构,使用插件获取内存......
  • union共用体以及如何判断大小端?
    目录方法一(共用体):如何判断大小端二:方法二(方法一(共用体):在C语言当中,有一个和结构体非常像的语法叫共用体(Union)。unionmyunion{ inta; charb;};unionmyuniontest;在共用体中,所以成员共用一段内存,对某一个数据成员赋值,其他成员也就失效了。在上述例子中,a占4个字节,b占1......
  • openGauss UNION子句
    UNION子句UNION计算多个SELECT语句返回行集合的并集。UNION内部的SELECT语句必须拥有相同数量的列,列也必须拥有相似的数据类型。同时,每条SELECT语句中的列的顺序必须相同。语法格式UNION:结果中如果出现相同的值,仅保留一个。SELECTcolumn_name(s)FROMtable_name1UNIONSE......
  • 题解 CF1743F【Intersection and Union】
    postedon2022-10-2119:23:54|under题解|sourceproblem给定\(n\)个集合\(S_i\),以\(l_i,r_i\)的形式给出,集合的元素就是\(\{x|x\in[l_i,r_i]\cap\mathbb{N}\}\)。有三种集合间的二元运算,分别是交(\(\cap\))、并(\(\cup\))、对称差(\(\oplus\))。其中对称差(\(A\oplusB......
  • 字符型union注入
    注入目标和思路:拿到库名---拿到表名---拿到列名---拿到用户名和密码用id=1'orderbyx--+来确定表有几列,然后用id=0'unionselectx1,x1,x3--+来确定回显位,然后在更改回显位用database()来拿到数据库名,以下用sqlname表示。注:数据库系统的数据库information_schem......
  • 深度解读《深度探索C++对象模型》之数据成员的存取效率分析(三)
    接下来我将持续更新“深度解读《深度探索C++对象模型》”系列,敬请期待,欢迎关注!也可以关注公众号:iShare爱分享,自动获得推文和全部的文章列表。前面两篇请通过这里查看:深度解读《深度探索C++对象模型》之数据成员的存取效率分析(一)深度解读《深度探索C++对象模型》之数据成员的......
  • 深度解读《深度探索C++对象模型》之数据成员的存取效率分析(二)
    接下来我将持续更新“深度解读《深度探索C++对象模型》”系列,敬请期待,欢迎关注!也可以关注公众号:iShare爱分享,自动获得推文和全部的文章列表。接下来的几篇将会讲解非静态数据成员的存取分析,讲解静态数据成员的情况请见上一篇:《深度解读《深度探索C++对象模型》之数据成员的存取......