代码示例

/*---------如何将16进制数转换为字符串?---------
-----------如何将字符串转换为数据?------------*/
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <string.h>#define SIZE 7char *c1 = "ABCD123400001111";                //待测试字符串 高位在前
uint16_t array[SIZE] = {0xABC,0x123,0xFFF,4095,100,8,6};       //待测试16进制数组int main(void) {int i, len;uint32_t temp[30] = { 0 };char temp1[50] = { 0 };/*函数声明*/void HexToAscii(uint8_t *src, char *dest, int len);      //16进制数转换为字符串char lowtocap(char c);                                 //小写字母转大写字母void AsciiToHex(char *src, uint32_t *dest, int len);   //字符串转16进制数/*** @brief  字符串长度判断处理* @note   字符串两个一组,不足两个当一组处理*/AsciiToHex(c1, temp, strlen(c1));   //字符串 c1 转16进制数if (strlen(c1) % 4 > 0)                  //字符串长度为奇数,进1{len = strlen(c1) / 4 + 1;}else                               //字符串长度为偶数                    {len = strlen(c1) / 4;}for (i = 0; i < len; i++){printf(" AsciiToHex int[%d] is %X,%d \n", i + 1, temp[i], temp[i]);  //%x十六进制 %d十进制}HexToAscii(array, temp1, SIZE); //16进制数组 s 转换为字符串printf("\n HexToAscii temp1 is %s \n\n", temp1);return 0;
}/*** @brief  Hex transform to ascii string* @note   16进制数转换为字符串* @param  *src  : 字符串指针* @param  *dest : 数组指针* @param  len   : 字符串长度  strlen(c1)不包括结束字符(即 null 字符)* @retval void*/
void HexToAscii(uint16_t *src, char *dest, int len)
{char dh1, dl2, dl3;  //字符串的高位和低位int i;if (src == NULL || dest == NULL){printf("src or dest is NULL\n");return;}if (len < 1){printf("length is NULL\n");return;}for (i = 0; i < len; i++){//printf("i = %d , %x\n",i, src[i]);dh1 = '0' + src[i] / 256;dl2 = '0' + src[i] % 256 / 16;       //以0为基准 dh='0'+AB/16=48+10=58 dl3 = '0' + src[i] % 16;       //dl='0'+AB%16=48+11=59if (dh1 > '9'){dh1 = dh1 - '9' - 1 + 'A'; // 或者 dh1= dh1+ 7;  dh1=65(A)}if (dl2 > '9'){dl2 = dl2 - '9' - 1 + 'A'; // 或者 dl2= dl2 + 7;  dl2=66(B)}if (dl3 > '9'){dl3 = dl3 - '9' - 1 + 'A'; // 或者dl3 = dl3 + 7; dl3=67(C)}dest[3 * i] = dh1;dest[3 * i + 1] = dl2;dest[3 * i + 2] = dl3;}dest[3 * i] = '\0';   //字符串结尾
}/*** @brief  ascii string transform to 16 jinzhi Hex.* @note   字符串转16进制数* @param  *src  : 字符串指针* @param  *dest : 数组指针* @param  len   : 字符串长度  strlen(c1)不包括结束字符(即 null 字符)* @retval void*/
void AsciiToHex(char *src, uint32_t *dest, int len)
{int  dh1 , dh2 , dl1 , dl2;                            // 16进制的高4位和低4位char ch1 , ch2 , cl1 , cl2;                          //字符串的高位和低位int i;if (src == NULL || dest == NULL){printf("src or dest is NULL\n");return;}if (len < 1){printf("length is NULL\n");return;}for (i = 0; i < len; i++){ch1 = src[4 * i];                 //字符串高位ch2 = src[4 * i + 1];              //字符串高位cl1 = src[4 * i + 2];              //字符串低位cl2 = src[4 * i + 3];              //字符串低位dh1 = lowtocap(ch1) - '0';            //dh1 = 'A'- '0' = 17 (ASCII)  16进制高四位  if (dh1 > 9){/*lowtocap可以用库函数toupper*/dh1 = lowtocap(ch1) - 'A' + 10;   //dh1 = 'A'- 'A' + 10 = 10 (ASCII)}dh2 = lowtocap(ch2) - '0';if (dh2 > 9)                       //dh2 = 'B'- '0' = 18 (ASCII){dh2 = lowtocap(ch2) - 'A' + 10;   //dh2 = 'B'- 'A' + 10 = 11 (ASCII)}dl1 = lowtocap(cl1) - '0';           //dl1 = 'C'- '0' = 19 (ASCII)if (dl1 > 9){dl1 = lowtocap(cl1) - 'A' + 10;   //dl = 'C'- 'A' + 10 = 12 (ASCII)}dl2 = lowtocap(cl2) - '0';             //dl = 'D'- '0' = 20 (ASCII)if (dl2 > 9){dl2 = lowtocap(cl2) - 'A' + 10;   //dl = 'D'- 'A' + 10 = 13  (ASCII)}dest[i] = dh1 * 4096 + dh2 * 256 + dl1 * 16 + dl2;  //数组赋值 dest[0] = 10*4096 + 11*256 + 12*16 + 13 = 43981}if (len % 4 > 0)                     //字符串个数为奇数 len = 11{dest[len / 4] = src[len - 1] - '0';  //落单字符单独成组  数组从0开始计数if (dest[len / 4] > 9)              // >9 使用字母表示,以A为基准 <9 直接数字表示{dest[len / 4] = lowtocap(src[len - 1]) - 'A' + 10;}}
}/*** @brief  lowercase letters transform to capital letter* @note   小写字母转大写字母* @param  c  : 入口参数 char字符* @retval char*/
char lowtocap(char c)
{if ((c >= 'a') && (c <= 'z')){c = c - 32;       // 或者c = c + ('a' - 'A');}return c;
}

运行结果


参考链接:
16进制与字符串相互转换(C语言)

16进制与ASCII互相转换相关推荐

  1. 把16进制转换为ascii字符c语言,ASCII转16进制C语言

    满意答案 u2gseftj278 推荐于 2016.03.01 采纳率:56%    等级:11 已帮助:14340人 以前引别人的,自己懒得再写了呵呵.原理就是这样的,你可以直接用的 //函 数 名 ...

  2. C# 中2,10,16进制及其ASCII码之间转化

    转载连接: http://blog.csdn.net/pengfeihe0123/article/details/7278221 C# 中2,10,16进制及其ASCII码之间转化           ...

  3. 用bat脚本写一个输入16进制转ascii码的代码

    以下是一个使用 BAT 脚本实现 16 进制转 ASCII 码的代码示例: @echo off set /p hex=请输入16进制字符串: for /l %%i in (0,1,%hex:~0,-2 ...

  4. 物联网中常用的方法,16进制二进制之间的转换

    由于最近公司做的是关于物联网的项目,所以经常用到进制转换的功能,所以自己写了一些并且收集了一些方法,供大家使用 import java.text.SimpleDateFormat; import ja ...

  5. qt 字符串16进制转ascii 字符串ascii转16进制字符串

    16进制转ascii int QHelper::changefromHex_to_ascii(QString str) {int ch = str.toInt(0,16);if ((ch >= ...

  6. JAVA 16进制转ASCII -- 2018年5月25日 周五

    /*** 16进制转ASCII** @param hex* @return*/public static String hex2Str(String hex) {StringBuilder sb = ...

  7. 16进制和ASCII字符互转

    C语言中,字符和其ASCII码是等价的,比如'A'这个字符和单字节整数65是等价的.  比如char c='A';int a=c;的话,a就是65 //函 数 名:CharToHex()  //功能描 ...

  8. asic码转16进制c语言,十六进制数转换成ascii码

    本文收集整理关于十六进制数转换成ascii码的相关议题,使用内容导航快速到达. 内容导航: Q1:一个十六进制数转换成ASCII码的单片机程序 HASC:MOVA,R0:从R0中取一个16进制(二进制 ...

  9. 16进制的两位数转换不了 matlab_跟小黑学漏洞利用开发之16进制字符转换

    Hello Every Boby! 又是一篇缓冲区漏洞利用的文章,本文我们将继续使用vulnserver漏洞练习程序中-HTER指令,它与前一篇Unicode类似.LTER缓冲区转换为Unicode, ...

最新文章

  1. 单纯形法(二)(线性规划的基本定理)
  2. 我对浮动的认识(一)
  3. 证书到期什么意思_建筑资质资质证书有效期及注意事项
  4. 老大,我就想加个索引,怎么就这么难?
  5. CSS3边框图片-像素虚边的问题
  6. mysql联表查询多记录显示_数据库:MySQL(多表的表记录的查询)(三)
  7. 《用Python写网络爬虫》——1.5 本章小结
  8. 哎~~~又是RichTextBox
  9. 逆天Kali带你游遍大江南北~安全之前人铺路!
  10. [模拟|字符串] leetcode 6 Z字形变换
  11. HDU 1728 优化的BFS
  12. java for步长_Velocity模板循环支持自定义步长
  13. 贰贰许远东在浙江省社科联学术年会上关于“中小企业数字化之路”的分享
  14. idea maven添加子moudle父pom被覆盖
  15. CDH集群中HDFS单点故障解决方案:HA模式(High Availability)
  16. 大聪明教你学Java | 调用腾讯云短信接口,实现短信通知
  17. 滤波、信号、数字与模拟、金字塔 一看就懂 教程
  18. oul可以用作c语言常量吗,2016春北交《C语言程序设计(专) 》在线作业二
  19. 【layui】图片查看器
  20. 微信境外支付php_PHP实现 APP端微信支付功能

热门文章

  1. Ubuntu和Windows双系统蓝牙键盘配对
  2. 10kV光伏并网用电能质量在线监测装置
  3. OpenCV-Python实战(7)——直方图详解
  4. 《惢客创业日记》2020.07.13(周一)最短的一篇日记。
  5. 超级表格CEO陈坤极受邀参与Impact China2018圆桌会议
  6. SaltStack-常用模块<一>
  7. linux server下载64位,ubuntu 16.04服务器版
  8. Python练习题答案: 括号是响亮!【难度:2级】--景越Python编程实例训练营,1000道上机题等你来挑战
  9. 爬虫框架scrapy,爬取豆瓣电影top250
  10. 超微物联网超级服务器IoT SuperServer SYS-210SE-31A 评测