涼の成長記録

自らの人生に主導権を持つべく、独立を目指して2014年3月31日を持ってITエンジニアを退職。そんな23歳♂の成長記録。

16進数ASCIIコードをint型の16進数に変換する

こんな感じです。他に方法ないのですかね。

/*!
    16進数ASCIIコードをint型の16進数に変換する。

    例) ['0' → 0x00], ['a' → 0x0a], ['F' → 0x0f]

    @param  character :変換元の16進数文字(ASCII)
    @return 変換結果。16進数文字でなければ0を返す
*/
int characterToHex(char character) {
    // 16進数文字でなければ0を返す。
    if (!isxdigit(character)) {
        return 0;
    }
    // '0'~'9'
    if (isdigit(character)) {
        return (character - 0x30);
    }
    // 'A'~'F'
    if (isupper(character)) {
        return (character - 0x37);
    }
    // 'a'~'f'
    if (islower(character)) {
        return (character - 0x57);
    }

    return 0;
}