16進数列を整数に変換する


関数名
hexsz2int  16進数列を整数に変換する
形式
int hexsz2int(char *str);
引数
str  16進数ASCIZ文字列
関数値
16進数列を表す整数
注意事項
整数のオーバーフローに注意すること。

用例(hexsz2int-test.c
hexsz2int("B6119");

プログラム(hexsz2int.c
int hexsz2int(char *str)
{
    int val;
    int sign;
    
    while (*str == ' ' || *str == '\t') str++;
    sign = 1;
    if (*str == '+') str++;
    else if (*str == '-') {
        sign = -1;
        str++;
    }
    val = 0;
    while (*str >= '0' && *str <= '9' ||
           *str >= 'A' && *str <= 'F' ||
           *str >= 'a' && *str <= 'f') {
        val <<= 4;
        if      (*str >= '0' && *str <= '9') val += *str - '0';
        else if (*str >= 'A' && *str <= 'F') val += *str - 'A' + 10;
        else                                 val += *str - 'a' + 10;
        str++;
    }

    return sign == 1 ? val : -val;
}
説明
16進数列の先頭から、まずホワイトスペースを読み飛ばす。 つぎに符号を処理して、16進数字の各桁を変換していく。各桁の 変換においては、0-9、A-F、a-fのような場合分けを考慮する。

関連関数
整数を2進数列に変換する整数を10進数列へ変換する整数を16進数列へ変換する2進数列を整数へ変換する10進数列を整数へ変換する