2019.12.6C++学习笔记——ASCII数据与HEX数据(十六进制)转换

近期工作中要求将工程中的数据在ASCII码与十六进制间转换(数据库数据输入输出格式转换),所以需要手动编写一个数据格式转换的接口函数。

十六进制转ASCII本质是为了写进数据库时16位数据变为32位,每个字节扩充为两个字节,反之两位并为一位即ASCII转回十六进制。

#include <stdlib.h>
#include <stdio.h>
#include <string.h>



//ASCII转十六进制,参数为:
//unsigned char chAscH   高位字节,即ASC【2*i】
//unsigned char chAscL   低位字节,即ASC【2*i+1】
//返回值return      HEX【i】
unsigned char AscToHex(unsigned char chAscH, unsigned char chAscL)
{
	if(chAscH>='0' && chAscH<='9')
		chAscH -= 48;
	else if(chAscH>='a' && chAscH<='f')
		chAscH -= 87;
	else if(chAscH>='A' && chAscH<='F')
		chAscH -= 55;
	if(chAscL>='0' && chAscL<='9')
		chAscL -= 48;
	else if(chAscL>='a' && chAscL<='f')
		chAscL -= 87;
	else if(chAscL>='A' && chAscL<='F')
		chAscL -= 55;
	return chAscH << 4 | chAscL;
}

//同上,HEX【i】一位拆成两位ASC【2*i】,ASC【2*i+1】
void HexToAsc(unsigned char chHex, unsigned char *chAscH, unsigned char *chAscL)
{
	unsigned char	chTemp;

	chTemp = chHex>>4;
	if(chTemp>=0 && chTemp<=9)
		chTemp += 48;
	else if(chTemp>=0x0a && chTemp<=0x0f)
		chTemp += 55;
	*chAscH = chTemp;
	chTemp = chHex & 0x0f;
	if(chTemp>=0 && chTemp<=9)
		chTemp += 48;
	else if(chTemp>=0x0a && chTemp<=0x0f)
		chTemp += 55;
	*chAscL = chTemp;
}
发布了25 篇原创文章 · 获赞 6 · 访问量 1419

猜你喜欢

转载自blog.csdn.net/weixin_43948991/article/details/103426910