【C/C++】uin8_t uint16_t uint32_t相互转换

简介: uin8_t uint16_t uint32_t 数据类型相互转换

1. uint8_t 转uint16_t

    uint8_t u8[4] = {0x12,0x34,0x56,0x78};
    uint16_t u16[2] = {0};
    
    u16[0] = (u8[1] << 8) + u8[0];
    u16[1] = (u8[3] << 8) + u8[2];

2. uint8_t 转uint32_t

    uint8_t u8[4] ={0x12,0x34,0x56,0x78};
    uint32_t u32 = 0;
    
    u32 = (u8[3] << 24) + (u8[2] << 16) + (u8[1] << 8) + u8[0];
    

3. uint16_t 转uint8_t

    uint8_t u8[4] = {0};
    uint16_t u16[2] = {0x3412,0x7856};

    u8[0] = u16[0] & 0xFF;
    u8[1] = (u16[0] >> 8) & 0xFF;
    u8[2] = u16[1] & 0xFF;
    u8[3] = (u16[1] >> 8) & 0xFF;

4. uint16_t 转uint32_t

    uint16_t u16[2] = {0x1234,0x5678};
    uint32_t u32 = 0;  
      
    u32 = (u16[1] << 16) + u16[0];
    

5. uint32_t 转uint8_t

    uint8_t u8[4] ={0};
    uint32_t u32 = 0x78563412;
    
    u8[0] = u32 & 0xFF;
    u8[1] = (u32 >> 8) & 0xFF;
    u8[2] = (u32 >> 16) & 0xFF;
    u8[3] = (u32 >> 24) & 0xFF;

6. uint32_t 转uint16_t

    uint8_t u16[2] ={0};
    uint32_t u32 = 0x56781234;
    
    u16[0] = u32 & 0xFFFF;
    u16[1] = (u32 >> 16) & 0xFFFF;
相关文章
《C++避坑神器·十四》项目路径获取及WCHAR 和char* 的相互转换
《C++避坑神器·十四》项目路径获取及WCHAR 和char* 的相互转换
319 0
|
编解码 网络协议 5G
【C/C++】uin8_t uint16_t uint32_t uint64_t数据类型解析
为了代码编写和阅读方便,我们通常会将数据类型名称声明为简写方式,即uin8_t/uint16_t/uint32_t/uint64_t,或者UINT8/UINT16/UINT32/UINT64。
3118 1
【C/C++】uin8_t uint16_t uint32_t uint64_t数据类型解析
|
C++
C++实现中文大写与阿拉伯数字的相互转换(类封装)
C++实现中文大写与阿拉伯数字的相互转换(类封装)
1174 0
C++学习——CString,char * ,string的相互转换
C++学习——CString,char * ,string的相互转换
431 0
|
编译器 C++
C/C++ - enum 与 int 相互转换
C/C++ - enum 与 int 相互转换
2354 0
|
C++
深入理解c++中char*与wchar_t*与string以及wstring之间的相互转换
本篇文章是对c++中的char*与wchar_t*与string以及wstring之间的相互转换进行了详细的分析介绍,需要的朋友参考下-复制代码 代码如下:    #ifndef USE_H_      #define USE_H_      #include       #include   ...
1925 0
|
编译器 C++ 开发者
【C++篇】深度解析类与对象(下)
在上一篇博客中,我们学习了C++的基础类与对象概念,包括类的定义、对象的使用和构造函数的作用。在这一篇,我们将深入探讨C++类的一些重要特性,如构造函数的高级用法、类型转换、static成员、友元、内部类、匿名对象,以及对象拷贝优化等。这些内容可以帮助你更好地理解和应用面向对象编程的核心理念,提升代码的健壮性、灵活性和可维护性。
|
编译器 C++ 容器
【c++11】c++11新特性(上)(列表初始化、右值引用和移动语义、类的新默认成员函数、lambda表达式)
C++11为C++带来了革命性变化,引入了列表初始化、右值引用、移动语义、类的新默认成员函数和lambda表达式等特性。列表初始化统一了对象初始化方式,initializer_list简化了容器多元素初始化;右值引用和移动语义优化了资源管理,减少拷贝开销;类新增移动构造和移动赋值函数提升性能;lambda表达式提供匿名函数对象,增强代码简洁性和灵活性。这些特性共同推动了现代C++编程的发展,提升了开发效率与程序性能。
495 12
|
11月前
|
人工智能 机器人 编译器
c++模板初阶----函数模板与类模板
class 类模板名private://类内成员声明class Apublic:A(T val):a(val){}private:T a;return 0;运行结果:注意:类模板中的成员函数若是放在类外定义时,需要加模板参数列表。return 0;
264 0