這裏是我的問題:從「0x4000」(例如)字符串中獲取十六進制值並將其存儲在變量中。
如果字符串基於關閉「0X ####」格式的十六進制我寫了一個函數來檢測:
int lc3_hashex(char *str)
{
int val = 0;
char *to;
to = strndup(str+2, 10);
val = sscanf(to, "%x", &val);
if (val)
{
return val;
}
return 0;
}
假設參數的形式爲「 0x ####「,它返回後綴」0x「數字的十進制版本。但是有沒有內建的方式(或我只是監督的方式)獲得十六進制數字「0x4000」的整數值而不是整數值「4000」?
謝謝。
'strndup'返回的字符串在完成使用後必須'free'd。 – Praetorian
...我認爲@jonsca回答了這個問題 - 但在附註中,請確保釋放你分配的內存(C不像Java) - 即strdup mallocs內存,你需要釋放它而不是泄漏它。 – Soren
有一個類似的討論,如果C++是一種可能性http://stackoverflow.com/questions/194465/how-to-parse-a-string-to-an-int-in-c'C'馬特的答案是好的。 –