1. 程式人生 > >十進位制數(字串)轉換為十六進位制數

十進位制數(字串)轉換為十六進位制數

緣由:程式中需要輸入十六進位制數再儲存資料傳送到下位機中。但我們在上位機中輸入的其實是一串字元。我上一位同事直接用的是強轉,數值不超過10還好,基本就是下位機配合上位機,但我又覺得這樣的做法不好,寫了一段函式用來將“字串”儲存為十六進位制數。在這裡就記錄一下,為我剛開始的事業人生添磚加瓦可憐

程式碼中直接要求只能轉換4位數以下的十六進位制數,直接貼程式碼:

int HexToInt(char *data)
{
	int Values = 0;
	int len,num=0;
	len = strlen(data);
	for(int i=len-1;i>=0;i--)
	{
		 int value;
		 num++;
		 value = HEXchangeINT(data[i]);
		 switch(num)
		 {
			 case 1:
				 Values = Values+value;
				 break;
			 case 2:
				 Values = Values+value*16;   
				 break;
			 case 3:
				 Values = Values+value*16*16;   
				 break;
			 case 4:                          //這裡限制了只能轉換4位數以下的十六進位制數,如果想轉換更長的資料,可以在這裡直接加
				 Values = Values+value*16*16*16;   
				 break;
		 }
	}
	return Values;
}
//這裡也限制了只能輸入大寫的“ABCDEF”
int HEXchangeINT(char data)
{
	int hex;
	switch(data)
	{
		case '0':
			 hex = 0;
			 break;
		case '1':
			 hex = 1;
			 break;
		case '2':
			 hex = 2;
			 break;
		case '3':
			 hex = 3;
			 break;	 
		case '4':
			 hex = 4;
			 break;	 
		case '5':
			 hex = 5;
			 break;	 
		case '6':
			 hex = 6;
			 break;
		case '7':
			 hex = 7;
			 break;	 
		case '8':
			 hex = 8;
			 break;	 
		case '9':
			 hex = 9;
			 break;	 
		case 'A':
			 hex = 10;
			 break;	 
		case 'B':
			 hex = 11;
			 break;
		case 'C':
			 hex = 12;
			 break;	 
		case 'D':
			 hex = 13;
			 break;
		case 'E':
			 hex = 14;
			 break;
		case 'F':
			 hex = 15;
			 break;	 
	}
	 return hex;
}

int main(void)
{
   int hex;
   hex=HexToInt("FF00");
}

儘管函式還有許多修改的地方,但這些都不復雜。僅為這次頭腦風暴做個記錄安靜