十進位制數(字串)轉換為十六進位制數
阿新 • • 發佈:2019-01-01
緣由:程式中需要輸入十六進位制數再儲存資料傳送到下位機中。但我們在上位機中輸入的其實是一串字元。我上一位同事直接用的是強轉,數值不超過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"); }