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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章