您当前的位置: 首页 >  c++

跋扈洋

暂无认证

  • 5浏览

    0关注

    221博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

进制转换-不同位数的数据相互转换(C/C++实现)

跋扈洋 发布时间:2022-07-08 11:44:41 ,浏览量:5

进制转换-不同位数的数据相互转换(C/C++实现)
  • 引言
  • 功能设计
  • 准备工作
  • 软件实现
    • 32位数据转成2个16位数据
    • 16位数据转成2个8位数据
    • 2个16位数据转成1个32位数据
    • 2个8位数据转成1个16位数据
    • 32位数据转成4个8位数据
    • 4个8位数据转成1个32位数据
    • 调试程序
      • 调试结果
  • 后续

引言

无论是在纯软件开发还是嵌入式开发,进制转换都是必不可少的程序。尤其对于嵌入式开发,因为数据和地址的频繁使用,进制转换的使用频率非常高。比如常用的32位数据分成两个16位数据,2个八位数据转成一个16位数据等。本文基于C/C++来编写程序,实现我们常用的几个进制转换功能。

功能设计
  1. 32位数据转成2个16位数据
  2. 16位数据转成2个8位数据
  3. 2个16位数据转成1个32位数据
  4. 2个8位数据转成1个16位数据
  5. 32位数据转成4个8位数据
  6. 4个8位数据转成1个32位数据
准备工作
  1. 下载VSCode

  2. 下载MinGW编译器

  3. VSCode 配置C/C++环境

软件实现 32位数据转成2个16位数据

32位数据拆分成两个16位数据,其实就是将32位数据的高16位和低16位数据分别赋值给两个16位数据。

struct multiple_data u32_turn_Two_HEX(uint32_t DATA)
{
    struct multiple_data DATAHEX;
    DATAHEX.hex_DATA1=(DATA>>16) & 0XFFFF;    //高16位
    DATAHEX.hex_DATA2=DATA & 0XFFFF;          //低16位
    return DATAHEX;
}

这个程序很好理解,就是将32位数据的高16位左移16位,此时数据应该从0x **** ****编程0x0000 ****。之后再将此值赋给一个16位数据即可。低位直接与0xFFFF后赋值给一个16位数据。

16位数据转成2个8位数据
struct multiple_data HEX_turn_Two_OCT(uint16_t DATA)
{
    struct multiple_data DATAOCT;
    DATAOCT.OCT_DATA1=(DATA>>8) & 0XFF;    //高8位
    DATAOCT.OCT_DATA2=DATA & 0XFF;          //低8位
    return DATAOCT;
}
2个16位数据转成1个32位数据
uint32_t Two_HEX_turn_32(uint16_t DATA1,uint16_t DATA2)
{
    uint32_t DATA_32;
    DATA_32=(DATA116) & 0XFF;
    DATAOCT.OCT_DATA3=(DATA>>8)  & 0XFF;    
    DATAOCT.OCT_DATA4=DATA       & 0XFF;     //低8位
    return DATAOCT;
}
4个8位数据转成1个32位数据
uint32_t four_OCT_turn_32(uint8_t DATA1,uint8_t DATA2,uint8_t DATA3,uint8_t DATA4)
{
    uint32_t DATA_32;
    DATA_32=(DATA1            
关注
打赏
1663745539
查看更多评论
0.0347s