编译语言: C
编译工具链:MinGW GCC
编译环境:eclipse


字符串转换成16进制函数
先写一个字符转大写的函数lowtocap
(也可以直接调用C库函数toupper,需#include <ctype.h>)

/*lowercase letters transform to capital letter*/
char lowtocap(char c)
{if((c >= 'a') && (c <= 'z')){c = c - 32;       // 或者c = c + ('a' - 'A');}return c;
}/*ascii string transform to 16 jinzhi Hex*/
void AsciiToHex(char *src, uint8_t *dest, int len)
{int dh,dl;   // 16进制的高4位和低4位char ch,cl;  //字符串的高位和低位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++){ch = src[2*i];cl = src[2*i+1];dh = lowtocap(ch) - '0';if(dh > 9){dh = lowtocap(ch) - 'A' + 10;   //lowtocap可以用库函数toupper}dl = lowtocap(cl) - '0';if(dl > 9){dl = lowtocap(cl) - 'A' + 10;   //lowtocap可以用库函数toupper}dest[i] = dh * 16 + dl;}if(len%2 > 0)   //字符串个数为奇数{dest[len/2] = src[len-1] - '0';if(dest[len/2] > 9){dest[len/2] = lowtocap(src[len-1]) - 'A' + 10;}}
}

16进制转换成字符串函数

/*16 jinzhi Hex transform to ascii string*/
void HexToAscii(uint8_t *src, char *dest, int len)
{char dh,dl;  //字符串的高位和低位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++){dh = '0' + src[i] / 16;dl = '0' + src[i] % 16;if(dh > '9'){dh = dh - '9' - 1 + 'A'; // 或者 dh= dh+ 7;}if(dl > '9'){dl = dl - '9' - 1 + 'A'; // 或者dl = dl + 7;}dest[2*i] = dh;dest[2*i+1] = dl;}dest[2*i] = '\0';
}

开始测试

#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <string.h>char *c1 = "ABCEEF12345678900C0B";    //待测试字符串
uint8_t s[7] = {0xAB,0xCC,100,50,10,9,8};  //待测试16进制数组int main(void) {int i,len;uint8_t temp[30] = {0};char temp1[50] = {0};AsciiToHex(c1,temp, strlen(c1));if(strlen(c1)%2 > 0){len = strlen(c1)/2 + 1;}else{len = strlen(c1)/2;}for( i = 0; i < len; i++){printf("int[%d] is %X,%d\n", i+1,temp[i],temp[i]);}HexToAscii(s,temp1,sizeof(s));printf("temp1 is %s", temp1);return EXIT_SUCCESS;
}

测试结果如下:

int[1] is AB,171
int[2] is CE,206
int[3] is EF,239
int[4] is 12,18
int[5] is 34,52
int[6] is 56,86
int[7] is 78,120
int[8] is 90,144
int[9] is C,12
int[10] is B,11
temp1 is ABCC64320A0908

16进制与字符串相互转换(C语言)相关推荐

  1. c语言 乱码转化为16进制_C语言版的16进制与字符串互转函数

    http://www.cnblogs.com/nio-nio/p/3309367.html /* // C prototype : void StrToHex(BYTE *pbDest, BYTE * ...

  2. python中文转16进制_Python 16进制与中文相互转换的实现方法

    Python中编码问题:u'\xe6\x97\xa0\xe5\x90\x8d' 类型的转为utf-8的解决办法 相信小伙伴们遇到过类似这样的问题,python2中各种头疼的转码,类似u'\xe6\x9 ...

  3. C# 16进制与字符串、字节数组之间的转换

    在串口通讯过程中,经常要用到 16进制与字符串.字节数组之间的转换 字符串转16进制字节数组  1         private static byte[] strToToHexByte(strin ...

  4. Java 字符串,byte[],16进制的字符串互转

    Java 字符串,byte[],16进制的字符串互转 /** * 字符串转换成十六进制字符串 */ public static String str2HexStr(String str) { char ...

  5. ByteArray、16进制、字符串之间的转换

    ByteArray.16进制.字符串之间的转换: package fengzi.convert {import flash.utils.ByteArray;public class ByteArray ...

  6. python 16进制补零_Python输出16进制不带0x补零,整数转16进制,字符串转16进制

    python输出16进制不带0x补零,整数转16进制,字符串转16进制 在开发中,我们偶尔会遇到需要将数据通过控制台打印出来,以检查数据传输的准确性.例如调试服务端刚接到的二进制数据(里面包含很多非可 ...

  7. Python输出16进制不带0x补零,整数转16进制,字符串转16进制

    Python输出16进制不带0x补零,整数转16进制,字符串转16进制   在开发中,我们偶尔会遇到需要将数据通过控制台打印出来,以检查数据传输的准确性.例如调试服务端刚接到的二进制数据(里面包含很多 ...

  8. 16进制转字符串字符串转16进制

    //16进制转字符串 void HexToStr(char *pbDest, char *pbSrc, int nLen) {     unsigned char ddl,ddh;     int i ...

  9. php把接收到的16进制转成字符串,php将16进制转为字符串的方法

    php将16进制转为字符串的方法 发布时间:2020-07-18 09:24:23 来源:亿速云 阅读:81 作者:清晨 这篇文章将为大家详细讲解有关php将16进制转为字符串的方法,小编觉得挺实用的 ...

  10. QT 实现16进制与字符串互转

    QT 实现16进制与字符串互转 文章目录 QT 实现16进制与字符串互转 前言 一.字符串QString转换16进制 二.16进制转换为字符串QString 三.正则表达式限制输入16进制 四.文本自 ...

最新文章

  1. 零基础是学java还是python-零基础学习编程,Java、Python你会选择哪个?
  2. Android混淆解析
  3. FD.io VSAP(VPP Stack Acceleration Project),通过FD.io VSAP构建用户态协议栈
  4. AndroidStudio项目提交到github
  5. 计算机系统导论第九章,计算机系统导论 -- 读书笔记 -- 第三章 程序的机器级表示 (持续更新)...
  6. A guess 解题报告
  7. java中容器如何维护其内容
  8. 使用Windbg分析蓝屏原因
  9. 截止今年六月底的s9t9
  10. 教你开发一个JS代码加密工具
  11. libvlc.java_java – LibVlc android无法加载库
  12. N-gram模型详解
  13. 仿elem页面学习之表单提交的动作
  14. 编写程序获取 vector 容器的第一个元素。分别使用下标 操作符、front 函数以及 begin 函数实现该功能,并提 供空的 vector 容器测试你的程序
  15. C#操作MicroSoft Word的代码
  16. 干货|Android免Root最全Hook插件(免Root Hook任意App)
  17. EMERSON艾默生AMS巡检仪维修TREX通讯器维修注意事项
  18. Java入门之Digital eigenvalue
  19. gpu虚拟化云服务器,gpu云服务器 虚拟化
  20. libjpeg库使用举例

热门文章

  1. 2019年技术盘点容器篇(三):阿里专家谈容器:既叫好又叫座? | 程序员硬核评测
  2. 软件测试中的测试报告
  3. ASA使用ASDM管理
  4. 普元eos根据查询条件导出excel表格
  5. 广州的11个辖区_13张地形图,快速了解广东省广州市的11个市辖区
  6. 9 个Java 性能优化的 工具,你知道几个?
  7. select下拉框option默认选中(php模板渲染)
  8. HP LaserJet P1108驱动安装
  9. 如何使用代理服务器下载文件_8uftp怎么下载客户文件,怎么使用8uftp下载客户文件?...
  10. qqkey获取原理_HIT我守护的一切手游电脑版苹果版有吗 HIT我守护的一切iOS电脑版模拟器...