読者です 読者をやめる 読者になる 読者になる

16進数のNSStringを数値に変換

float hexStringToFloat(NSString* str)
{
    NSString *prefix = [str substringWithRange:NSMakeRange(02)];
    if(![prefix isEqualToString:@"0x"])
    {
        str = [@"0x"stringByAppendingString:str];
    }
    NSScanner* pScanner = [NSScannerscannerWithString: str];
    float iValue;
    [pScanner scanHexFloat: &iValue];
    return iValue;
}


NSScannerという便利な物の紹介。

使用例を上に書いておく。
上の例は、16進数で書かれた数値がNSString型で入っているとする(.plistからこのようにして読み込んだことがあった)。
もし先頭に"0x"が無ければ、それを付加したあとにfloat型に変換する。