文字列「6A」を持っていますが、どのように16進値6Aに変換できますか?
Cでの解決を手伝ってください
私は試した
char c[2]="6A"
char *p;
int x = atoi(c);//atoi is deprecated
int y = strtod(c,&p);//Returns only first digit,rest it considers as string and
//returns 0 if first character is non digit char.
質問
「文字列を16進値に変換するにはどうすればよいですか?」
よく聞かれますが、それは正しい質問ではありません。より良いでしょう
「16進文字列を整数値に変換するにはどうすればよいですか?」
その理由は、整数(またはcharまたはlong)値がバイナリ形式でコンピューターに保存されるためです。
"6A" = 01101010
値が1つの表記法または別の表記法で表現されるのは、人間の表現(文字列)のみです
"01101010b" binary
"0x6A" hexadecimal
"106" decimal
"'j'" character
すべて異なる方法で同じ値を表します。
しかし、質問への回答では、16進文字列をint
に変換する方法
char hex[] = "6A"; // here is the hex string
int num = (int)strtol(hex, NULL, 16); // number base 16
printf("%c\n", num); // print it as a char
printf("%d\n", num); // print it as decimal
printf("%X\n", num); // print it back as hex
出力:
j
106
6A