甘いものが好きです

iOS App開発時に感じた疑問や課題、その他の雑感などを書いていきます。

NSScannerを利用して16進数の文字列を10進数の数値に変換

16進数の文字列から10進数の数値を得る方法を探していたら、NSScannerを使うと便利だという情報を発見。

NSString *colorCode = @"0x80ffc4";

unsigned int rgb[3];
for (int i = 0; i < 3; i++) {
    NSString *component = [colorCode substringWithRange:NSMakeRange(i * 2, 2)];
    NSScanner *scanner = [NSScanner scannerWithString:component];
    [scanner scanHexInt:&rgb[i]];
}

NSScannerの使い方は『詳解iOS5プログラミング』の2.3.1節「文字列と数値の変換」で触れられており、そこではscanUpToString:intoString:によるスキャン位置の移動についても説明されている。

詳解iOS5プログラミング

詳解iOS5プログラミング

ちなみに、数値から文字列への変換は、NSStringクラスのstringWithFormat:で可能だ。