ASCII字符和16进制字节数据互转
接着上次写的一个字符转换。这次是互转,更便于理解。
1.CharToHex()
//功能描述:把ASCII字符转换为16进制
将两个ASCII字符转化为单个字节进行显示,即两个字节转化为一个字节。如’E’ 'B’两个字符,转化为0xEB。
void CharToHex(unsigned char *GB, int glen, unsigned char* SB, int* slen)
{ int i; //遍历输入的字符串int a = 0; char temp; //接收字符,用来判断是否为空格,若是则跳过char temp1,temp2; //接收一个字节的两个字符 例如EB,则temp1='E',temp2 = 'B'*slen = 0; //输出的16进制字符串长度for(i=0;i<glen;i++){temp = GB[i];if(temp==' ')continue;if(a == 0)temp1 = GB[i];if(a == 1)temp2 = GB[i];a++;if(a==2){//第一个字符转换if((temp1>=0x30)&&(temp1<=0x39)) temp1 -= 0x30; else if((temp1>=0x41)&&(temp1<=0x46))//大写字母 temp1 -= 0x37; else if((temp1>=0x61)&&(temp1<=0x66))//小写字母 temp1 -= 0x57; else temp1 = 0xff; //第二个字符转换if((temp2>=0x30)&&(temp2<=0x39)) temp2 -= 0x30; else if((temp2>=0x41)&&(temp2<=0x46))//大写字母 temp2 -= 0x37; else if((temp2>=0x61)&&(temp2<=0x66))//小写字母 temp2 -= 0x57; else temp2 = 0xff; SB[*slen] = temp1*16+temp2; //转成16进制字节数据(*slen)++;}}
}
2.HexToChar()
//功能描述:把16进制转换为ASCII字符
将单个字节转化为两个ASCII字符进行显示,即一个字节转化为两个字节。如0xEB,转化为’E’ 'B’两个字符。
void HexToChar(unsigned char *bHex,unsigned char *bchar,int* slen)
{*slen = 0; //输出的字符串长度int blen=0;int v=0;int m=0;blen=strlen(*bHex);for(int i=0;i<blen:i++){v = (bHex[i]) / 16; //高位m = (bHex[i]) % 16; //低位// 高位转charif((v>=0)&&(v<=9)) v += 0x30; else if((v>=10)&&(v<=15))//大写字母 v += 0x37; else v = 0xff; bchar[*slen] = (unsigned char)v;//ASCII转char类型v;(*slen)++; // 低位转charif((m>=0)&&(m<=9)) m += 0x30; else if((m>=10)&&(m<=15))//大写字母 m += 0x37; else m = 0xff; bchar[*slen] = (unsigned char) m;//ASCII转char类型m;(*slen)++; }
}
代码没有测试过,只是看了网上的解释,结合自己的理解写的。
附上最全的ASCII码表:
ASCII字符和16进制字节数据互转相关推荐
- 串口编程 - ascii字符与16进制的相互转换
串口编程 - ascii字符与16进制的相互转换 如需转载请标明出处:http://blog.csdn.net/itas109 QQ技术交流群:129518033 文章目录 串口编程 - ascii字 ...
- C语言输出字符,字符串的ASCII码的16进制数
C语言输出字符,字符串的ASCII码的16进制数 /* file name : test.c cmd code : gcc -o test.exe test.c */ #include<stdi ...
- linux ascii与字符相互转换,ascii 字符串和16进制相互转换
python 实现的 ascii 字符串和16进制相互转换,备忘一下.有时候转换个IP地址会用到. ''' _ooOoo_ o8888888o 88" . "88 (| -_- | ...
- QT 字符转16进制字符串
串口工具有一个功能是把字符转换成16进制字符 例如字符'6'的ASCII 码是54换成16进制是36 字符转16进制字符串 QString AngelaTest::charToHexStr(char ...
- ASCII码转16进制 十六进制转ASCII码
ASCII码转16进制 十六进制转ASCII码 //ASCII码转16进制 function strToHexCharCode(str) { if (str === "") { r ...
- 字符串转16进制字节数组,字节数组转16进制字符串
/// <summary>/// 字符串转16进制字节数组/// </summary>/// <param name="hexString">& ...
- python3 Unicode字符与16进制编码互转(单个字符)
def pad(text):while len(text) % 4 != 0:text = '0'+textreturn textdef Unicode2HexChar(Unicde_Char):#U ...
- QT 实现16进制与字符串互转
QT 实现16进制与字符串互转 文章目录 QT 实现16进制与字符串互转 前言 一.字符串QString转换16进制 二.16进制转换为字符串QString 三.正则表达式限制输入16进制 四.文本自 ...
- Java 字符串,byte[],16进制的字符串互转
Java 字符串,byte[],16进制的字符串互转 /** * 字符串转换成十六进制字符串 */ public static String str2HexStr(String str) { char ...
最新文章
- linux的shell的功能,linux shell中${ }的一些特异功能
- 基于Pytorch再次解析AlexNet现代卷积神经网络
- 信息系统项目管理师优秀论文:项目整体管理
- 1034 有理数四则运算 (20 分)(c语言)(测试点三)
- vbs打开软件光标停在第一个输入框_三维设计软件,3DMAX最全快捷键大全,赶快收藏哦...
- 什么方式可以通过影子系统传播恶意代码_将恶意代码隐藏在图像中:揭秘恶意软件使用的隐写术...
- verilog 生成块_如何高效的编写Verilog——终极版
- Javascript实现页面跳转传值示例Demo
- 富士施乐3065扫描教程_富士施乐怎么设置扫描到PC
- 一个小型的汇编编译器
- android横竖屏切换布局闪退,D10上旋转屏幕闪退怎么回事
- 等值线/面生成一站式封装
- 学生版计算机隐藏游戏,玩了近15年的QQ,才发现这3个隐藏功能,学生党看完炸锅了!...
- OSChina 周一乱弹 —— 鱼生不值得
- 12位中年程序员:代码一敲十年,收入虽高前途摇摆
- gif怎么做成html,gif动态图片制作方法 附带电脑版和手机版制作gif动图教程
- access 和SQL有什么不同
- arm开发板与windows下的pjsip建立通话
- 什么是C++ __builtin_popcount()函数
- 斐波那契堆(不太详尽)
热门文章
- mysql什么类型允许负数_SQL数据库中那个类型可以存储负数,比如说存储-50? 如果不能存储。用什么方法存储?...
- 销售额高达2.8亿的 “像素猫头鹰”项目Moonbirds,何以令NFT收藏家趋之若鹜?
- 微信公众号开发获取openID以及用户详细信息,超详细步骤,亲测开发
- OKHTTP系列(九)---http请求头(header)作用
- App自动化界面操作_按键模拟(模拟键盘信号)、driver.keyevent(keycode)
- 【数学】高昆轮高数下强化
- 读《Oracle 数据库应用与实践》
- 大恒相机Python版Qt界面(二)
- IEC60958和IEC61937
- TB6612FNG电机驱动模块的简单使用