2010-12-31 20 views
1

これを行うためにatoi関数を使ってみましたが、うまくいかなかった。文字[16進数]から整数

「0x44」という文字列を整数(0x44またはそれに相当する10進数)に変換したいとします。

これを実行できる機能を知っている人はいますか?

答えて

9

はい。代わりにstrtolを使用し、ベースとして0を指定します。

+0

おかげで、だと思います。 – Saustin

1

私は...これはあなたが探しているもので、迅速かつ無痛

#include<stdio.h> 
#include<stdlib.h> 

void main() { 
    char* hex = "0x44"; 
    int i; 

    sscanf(hex, "%x", &i); 
    printf("%d\n", i); 
} 
+0

私はこの解決方法も提供しましたが、 '0x44z 'のような不正入力は' 0x44'として扱われるので削除しましたが、これは望ましくないかもしれません。 – cdhowie

+0

それだけでなく、 'scanf'は正しく使用するのが難しいことがよく知られています(十分に不正な入力を与えられた場合、' i'はこの場合初期化に失敗します)。またOPは '0x 'または' 0 '接頭辞が存在するかどうかを示します。 –

+0

私は最初の質問は "0x44"を整数に変換する方法だと思った...私は間違っていたと思う。 – azazeal