-1

16 進値の nsstring を float 値に変換しようとしています。

NSString *hexString = @"3f9d70a4";

float 値は です= 1.230

これを解決しようとしたいくつかの方法は次のとおりです。

1.NSスキャナー

-(unsigned int)strfloatvalue:(NSString *)str
{
   float outVal;
   NSString *newStr = [NSString stringWithFormat:@"0x%@",str];
   NSScanner* scanner = [NSScanner scannerWithString:newStr];
   NSLog(@"string %@",newStr);
   bool test = [scanner scanHexFloat:&outVal];
   NSLog(@"scanner result %d = %a (or %f)",test,outVal,outVal);
   return outVal;
}

結果:

 string 0x3f9d70a4
 scanner result 1 = 0x1.fceb86p+29 (or 1067282624.000000)

2.ポインタのキャスト

NSNumber * xPtr = [NSNumber numberWithFloat:[(NSNumber *)@"3f9d70a4" floatValue]];

結果:3.000000

4

3 に答える 3

0

NSStringしたがって、基本的にはto Cを作成しようとしてfloatいます。それには昔ながらの方法があります。

NSString* hexString = @"3f9d70a4";
const char* cHexString = [hexString UTF8String];
long l = strtol(cHexString, NULL, 16);
float f = *((float *) &l);
// f = 1.23

詳細については、この回答を参照してください

于 2020-07-21T09:20:49.303 に答える