ViVi Home > 技術文書 > ポインタ入門 > 基礎演習問題 > atohex


 

 

C/C++ ポインタ入門 > 文字列関数 > atohex
Nobuhide Tsuda
Nov-2013

文字数を16進数変換:int my_atohex(const char *str)

bool ishexdigit(char ch)
{
	return isdigit(ch) || ch >= 'A' && ch <= 'F' || ch >= 'a' && ch <= 'f';
}
int my_atohex(const char *str)
{
    if( !ishexdigit(*str) ) {   // str の先頭文字が16進数文字でない場合は -1 を返す
        return -1;
    }
    int val = 0;      // 初期値を 0 に設定
    while( ishexdigit(*str) ) {  // str の指す先が16進数文字である間
        if( isdigit(*str) ) {    // 10進数文字の場合
            val = val * 16 + *str++ - '0';      // 値を16倍し、数字を足す
        } else if( *str >= 'A' && *str <= 'F' ) {    // A ~ F の場合
            val = val * 16 + *str++ - 'A' + 10;      // 値を16倍し、数字を足す
        } else {    // a ~ f の場合
            val = val * 16 + *str++ - 'a' + 10;      // 値を16倍し、数字を足す
        }
    }
    return val;       // 値を返す
}

解説:

 


前: | 次: