背景介绍

在嵌入式系统中, 通常会使用串口发送字符串的方式与通信模块通信,比如NBIoT模块。 有的通信模块不支持二进制形式进行透传,需要MCU事先将二进制数据转换为十六进制的字符串形式发送。比如,MCU需要发送的数据为0x1234,但通信模块只能接受字符串形式,因此必须要将其转换成字符串形式的"1234",通信模块才能正常接收处理。

具体要求

请实现一个转换函数void to_hex_string(char* pSrc, char* pDst, int len) 其中,原始二进制数据从pSrc输入,len表示数据的长度,转换后的结果保存到pDst中,pDst指向一个长度足够长的数组变量。 最后,打印该字符串的内容。

代码如下

#include <stdio.h>
#include <string.h>
void to_hex_string(const char *pSrc, char *pDst, int len)
{const char mapping_hex_string[] = "0123456789ABCDEF";for (int i = 0; i < len; i++, pSrc++){pDst[i * 2] = mapping_hex_string[*pSrc >> 4];// printf("pDst[i * 2]=%c\n", pDst[i * 2]);pDst[i * 2 + 1] = mapping_hex_string[*pSrc & 15];// printf("pDst[i * 2 + 1]=%c\n", pDst[i * 2 + 1]);}
}
int main() {char result[100] = {};short a = 0x1234;to_hex_string((char*)&a, result, sizeof(a));printf("a=0x%s\n", result);return 0;
}

输出结果:a=0x3412

备注:实际上因为int a 在PC内存中按小端方式存放,因此实际输出结果为0x3412。

C语言实现字符串转十六进制相关推荐

  1. C语言 文本字符串和十六进制形式的相互转换

                                                      C语言 文本字符串和十六进制形式的相互转换 一.简述        记--C语言实现 文本形式的字符 ...

  2. 【C语言】字符串转为十六进制(str_to_hex)

    近日在开发过程中,遇到一个问题.将字符串转为十六进制,利用snprintf转换str的格式. 下面贴上代码实现. #include <stdio.h>void test_printf5(c ...

  3. c语言的十进制转十六进制字符串,用c语言写一个函数把十进制转换成十六进制,该如何处理...

    用c语言写一个函数把十进制转换成十六进制 用c语言写一个函数把十进制转换成十六进制 网上找到一些,感觉有占乱 分享到: ------解决方案-------------------- #include ...

  4. c语言字符串转成二进制,C语言中字符串如何转换为二进制、八进制、十进制、十六进制...

    在C语言某个程序当中需要把文本16进制转换成对应的16进制数,比如字符串"0x1a"转换成10进制的26,可以用以下函数来实现 相关函数: atof, atoi, atol, st ...

  5. C语言 -- 字符串和十六进制的相互转换方式

    C语言的字符串操作并不像java,Csharp那样提供直接的方法,简单粗暴.所以,在转换的时候往往费力费时,近日做项目正好用到和java程序通讯,java发送过来的数据是十六进制数字组成的字符串,解析 ...

  6. C语言如何将十六进制字符串转为十六进制Byte

    问题展示 我们的目标是 将十六进制字符串转为十六进制Byte 由上图我们可以清晰的看到 我们失败了.如何解决呢? 代码示例 #include<stdio.h> #include<st ...

  7. 【C语言】编写程序,输入一个以回车符结束的字符串(少于80个字符),过滤去所有的非十六进制字符后,组成一个新字符串(十六进制形式),然后将其转换为十进制数后输出。

    题目: 编写程序,输入一个以回车符结束的字符串(少于80个字符),过滤去所有的非十六进制字符后,组成一个新字符串(十六进制形式),然后将其转换为十进制数后输出. **输入提示信息:"请输入十 ...

  8. HART协议数据格式避坑(C语言压缩字符串Packed-ASCII和ASCII转换)

    HART协议数据格式避坑(C语言压缩字符串Packed-ASCII和ASCII转换) 首先HART数据格式如下: 重点就是浮点数和字符串类型 Latin-1就不说了 基本用不到 浮点数 浮点数里面 如 ...

  9. C语言里字符串的解析

    根据给定的字符串,按照一定规则解析字符串 转自:http://www.cnblogs.com/yi-meng/p/3620244.html 函数名称:   strtok  函数原型:   char * ...

最新文章

  1. iOS 项目中包含多个 FFMPEG 方法冲突的通用解决办法。
  2. 更新至Android Studio4.1后发现as打不开的解决方案
  3. 2012百度实习生招聘面试题
  4. ADS中startup.s文件启动分析
  5. SharePoint v3:忘掉模拟用户Impersonate,SPSecurity.RunWithElevatedPrivileges来了
  6. 那些书对程序员最有影响
  7. 自动售货机支付服务器开发,自动售货机是如何实现移动支付的?
  8. android win10 驱动安装失败,解决在win10系统下小米手机驱动安装失败的具体步骤...
  9. 北京邮电大学计算机考研信息汇总
  10. 图像的像素、分辨率、像元尺寸、大小、清晰度的关系
  11. 诡异大阳飙升动因何在
  12. win10家庭中文版系统配置远程桌面连接
  13. Win10系统导出证书私钥及公钥
  14. IP协议详解之IPv6头部结构简介
  15. 苹果发布AirPods 3,TWS真无线蓝牙耳机市场活力依旧
  16. 【SpringCloud】Could not find artifact org.springframework.cloud:spring-cloud-starter-xxx
  17. 微信小程序开发—— app.json
  18. 关于mailx邮件发不出去的解决办法
  19. HTML基础选择器之属性选择器的基本介绍
  20. 安装openKylin 开源操作系统 (ubuntukylin-22.04-pro-amd64.isowindows版)

热门文章

  1. 计算机应用基础 随堂问答,【计算机应用基础】随堂练习2018
  2. 苹果无线耳机使用方法_硕美科W20真无线耳机怎么样?
  3. e297: write error in swap file
  4. linux zx命令_linux常用命令小结
  5. Android扫描蓝牙问题,你是不是位置权限和GPS都打开了还是扫不出东西
  6. Tawk.to一键给自己的网站增加在线客服功能
  7. h3c防火墙u200配置命令_h3c防火墙配置教程
  8. 在AR9331上使用Openwrt
  9. 亚马逊(脚本)自动化软件开发案例过程
  10. 1024——程序员的快乐