C語言如何將字符串轉十六進制

版權聲明:本文爲博主原創文章,未經博主允許不得轉載。

通過查ASCII表知道:'a'對應的十六進制是是0x61,'A'對應的十六進制是0x41,'f'對應的十六進制是是0x66,'F'對應的十六進制是0x46,'0'對應的十六進制是是0x30,'9'對應的十六進制是0x39,其實這裏的十六進制就是由字符對應的ASCII碼轉換得來的,下面主要講下如何將數字0~9和26個英文字母轉換成十六進制並存到數組中,直接貼代碼分析。

void StringToHex(char *str, unsigned char *strhex)
{
	uint8_t i,cnt=0;
	char *p = str;             //直針p初始化爲指向str
	uint8_t len = strlen(str); //獲取字符串中的字符個數
	
	while(*p != '\0') {        //結束符判斷
		for (i = 0; i < len; i ++)  //循環判斷當前字符是數字還是小寫字符還是大寫字母
		{
			if ((*p >= '0') && (*p <= '9')) //當前字符爲數字0~9時
				strhex[cnt] = *p - '0' + 0x30;//轉爲十六進制
			
			if ((*p >= 'A') && (*p <= 'Z')) //當前字符爲大寫字母A~Z時
				strhex[cnt] = *p - 'A' + 0x41;//轉爲十六進制
			
			if ((*str >= 'a') && (*p <= 'z')) //當前字符爲小寫字母a~z時
				strhex[cnt] = *p - 'a' + 0x61;  //轉爲十六進制
		
			p ++;    //指向下一個字符
			cnt ++;  
		}
	}
}

利用上述代碼可得到以下轉換結果:

當輸入字符串str[] = {"123abcABC"} 時,輸出srthex[9] = {0x31,0x32,0x33,0x61,0x62,0x63,0x41,0x42,0x43}。

最後說下轉換爲十六進制的計算:

數字轉換:strhex[cnt] = *p - '0' + 0x30;先將當前的字符與'0'減運算得到兩者之差,這裏實際是字符的ASCII碼相減,兩者之差再加上起始字符'0'的十六進制0x30就可以得到當前字符的十六進制了,字母的轉換也是如此,這裏就不多說了。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章