16進数のNSStringを数値に変換
float hexStringToFloat(NSString* str) { NSString *prefix = [str substringWithRange:NSMakeRange(0, 2)]; 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型に変換する。