我是靠谱客的博主 寂寞百合,最近开发中收集的这篇文章主要介绍把uint16_t 十六位类型数据转化成uint8_t 八位数据类型数据的两种方法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

        最近在STM32单片机操作中,常常需要通过UART,I2C,USB等端口发送各种传感器的数据,这些传感器寄存器大多是32位或者16位的。HAL库中发送函数都是8位指针结构,不能直接发送不同类型的数据,这就需要把不同长度及类型的数据转换成uint8_t 无符号8位整型。现总结两种方法,如下:

/********************************************************************
 * 测试程序 
 *
 * 数据存取实验--8位类型存取16位类型数据
 *
 * 输入16位,输出8位指针或数组。
 ********************************************************************/

static uint16_t Ui16ToUin8_P(uint16_t adata,uint8_t *bdata)
{
    //方法一:指针法
    //把一个16位数复制给一个8位的指针变量,这个8位指针变量的两个连续地址用
    //于存放16位数的高低位,输入16位,输出8位指针。
   

    *bdata = (uint8_t)(adata >>8 &0x0F); //前面(uint8_t)为强制类型转换
    *(bdata+1) = (uint8_t)(adata & 0x0F);

    return *bdata;
}

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

static uint16_t Ui16ToUin8_R(uint16_t adata,uint8_t bdata[])
{
    //方法二:数组法
    //把一个16位数复制给一个8位的指针变量,这个8位指针变量的两个连续地址
    //用于存放16位数的高低位,输入16位,输出8位指针。
   

    bdata[0] = (uint8_t)(adata >>8 &0x0F); //前面(uint8_t)为强制类型转换
    bdata[1] = (uint8_t)(adata & 0x0F);

    return bdata[0];
}

 (本文的目的是方便初学者,欢迎探讨。)

 

最后

以上就是寂寞百合为你收集整理的把uint16_t 十六位类型数据转化成uint8_t 八位数据类型数据的两种方法的全部内容,希望文章能够帮你解决把uint16_t 十六位类型数据转化成uint8_t 八位数据类型数据的两种方法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(73)

评论列表共有 0 条评论

立即
投稿
返回
顶部