アルゴリズム

16 進数

int fromHexChar(char c)
{
  char upper = c & 0x40;
  char lower = c & 0x0F;
  retrn (upper >> 3) | (lower + (upper >> 6));
}

備考

// 0x30: '0'    0b 0011 0000  --> 0000 0000
//  :
// 0x39: '9'    0b 0011 0101  --> 0000 1001

0-9 は, 上位 bit をなくせばよい。

// 0x41: 'A'    0b 0100 0001  --> 0000 1010
// 0x61: 'a'    0b 0101 0001  --> 0000 1010

A-F, a-f の下位 bit は同じ。 上位 bit を見ると、 0#00 の # 部分が 1で、0-9はこのビットが 0 → このビットをうまいこと使って調整している。

トップ   差分 バックアップ リロード   一覧 検索 最終更新   ヘルプ   最終更新のRSS