大鼻子JOJO 2023-05-07 20:36 采纳率: 75%
浏览 41
已结题

stm32如何将16位二进制数转换为两个16进制数再存储

stm32如何将16位二进制数转换为两个16进制数再存储
相关代码如下

BUF=GPIOE->INDR;
buf2[number]   = BUF&0XFF;
buf2[number+1] =(BUF>>8)&0XFF;

BUF为从GPIO读取的16位二进制数据,拆分成高八位和低八位存储到buf2中,因为为了后续功能需要,buf2是uint8_t类型数组,想要把BUF2的高八位和低八位以16进制格式存储进buf2该如何操作?

  • 写回答

2条回答 默认 最新

  • Bony- 2023-05-07 20:53
    关注

    要将16位二进制数转换为两个16进制数并存储到一个uint8_t类型的数组中,可以使用sprintf函数将其转换为一个字符串,然后将字符串中的每个字符存储到数组中。以下是示例代码:

    BUF = GPIOE->IDR;
    char buf_str[5]; // 4个字符 + 结尾的'\0'
    sprintf(buf_str, "%04X", BUF); // 将BUF转换为416进制字符串,不足4位的前面用0填充
    buf2[number] = buf_str[0]; // 存储高8位的十六进制数的第一个字符
    buf2[number+1] = buf_str[1]; // 存储高8位的十六进制数的第二个字符
    buf2[number+2] = buf_str[2]; // 存储低8位的十六进制数的第一个字符
    buf2[number+3] = buf_str[3]; // 存储低8位的十六进制数的第二个字符
    

    在这里,sprintf函数将16位二进制数BUF转换为一个4位的16进制字符串buf_str。%04X指示sprintf将输出4个十六进制数字,并在左侧用0填充不足4个数字的空间。然后,将buf_str中的每个字符存储到buf2数组中,其中buf2[number]和buf2[number+1]存储BUF的高8位的16进制表示,buf2[number+2]和buf2[number+3]存储BUF的低8位的16进制表示。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 5月16日
  • 已采纳回答 5月8日
  • 创建了问题 5月7日

悬赏问题

  • ¥20 这张图页脚大概具体代码该怎么写?
  • ¥20 WPF MVVM模式 handycontrol 框架, hc:SearchBar 控件 Text="{Binding NavMenusKeyWords}" 绑定取不到值
  • ¥15 需要手写数字信号处理Dsp三个简单题 不用太复杂
  • ¥15 数字信号处理考试111
  • ¥15 allegro17.2生成bom表是空白的
  • ¥15 请问一下怎么打通CAN通讯
  • ¥20 如何在 rocky9.4 部署 CDH6.3.2?
  • ¥35 navicat将excel中的数据导入mysql出错
  • ¥15 rt-thread线程切换的问题
  • ¥15 高通uboot 打印ubi init err 22