2016-05-17 134 views
-3

我想把這個字符串放入布爾數組中。每個字符的int字符串都是一個Hex#。我如何將字符串轉換爲十六進制的C?

所以我想我可以將字母轉換爲4位二進制#以便它們可以填充64位長度的數組。

我已經試過strtol(), atoi(), array = &inText,但他們似乎不工作。

char *inText = "123456ABCD132536"; //its 16 letters 

bool array[64]; 
+1

我覺得很令人不安的是打字'[C]字符串轉換中產生的搜索框中hex' *沒有*有助於這項工作的候選人。你試過了,對吧? – WhozCraig

回答

1

您可以使用strtol函數。

從人的網頁:

C庫函數long int strtol(const char *str, char **endptr, int base)根據給定的基礎上,它必須是2之間的字符串在STR初始部分轉換爲長整型 值和36 (含),或者是特殊值0.

聲明以下是關於strtol()函數的聲明。

long int strtol(const char *str, char **endptr, int base)參數 str - 這是包含整數 數字表示的字符串。

endptr - 這是參照類型char *的一個目的,其 值由功能 數值後設置爲下一個字符在str中。

- 這是鹼,其必須在2到36以下,或 之間是特殊值0

返回值該函數返回經轉換的整數作爲 長int值,否則返回零值。

基本上你可以使用這個函數,如果你想將字符串轉換成任何數字系統。

0
/*converting inText character into Hex and adding into array*/ 
for(i=0, j=0; i < strlen(inText); i++, j+=2) 
{ 
    sprintf((char*)array + j, "%2X", inText[i]); 
} 
array[j]='\0'; /*adding NULL in the end*/ 

%2X在同一時間需要2個字符,這些2個字符轉換爲十六進制值,

相關問題