如何将 NSString 转换为 NSInteger 的十六进制表示
How can I cast an NSString as a hex representation of NSInteger
Cast 这个词不对,但请耐心等待。我有以下字符串:
NSString *string = @"01700000";
但是,我需要检查它是否包含我正在寻找的特定位:
if (bitshift & (1 << 21)) {
NSLog(@"YES");
} else {
NSLog(@"NO");
}
使用 [string integerValue]
获取整数值会产生意外结果:
NSInteger bitshift = (1 << 24) | (1 << 22) | (1 << 21) | (1 << 20);
NSString *flags = @"01700000";
NSInteger bitshiftString = [flags integerValue];
// bitshift: 1700000, bitshiftString: 19f0a0
NSLog(@"bitshift: %tx, bitshiftString: %tx", bitshift, bitshiftString);
将此字符串值扫描成 NSInteger
的最合适方法是什么?
事实证明这非常简单:
unsigned int bitshiftString;
[[NSScanner scannerWithString:flags] scanHexInt:&bitshiftString];
Cast 这个词不对,但请耐心等待。我有以下字符串:
NSString *string = @"01700000";
但是,我需要检查它是否包含我正在寻找的特定位:
if (bitshift & (1 << 21)) {
NSLog(@"YES");
} else {
NSLog(@"NO");
}
使用 [string integerValue]
获取整数值会产生意外结果:
NSInteger bitshift = (1 << 24) | (1 << 22) | (1 << 21) | (1 << 20);
NSString *flags = @"01700000";
NSInteger bitshiftString = [flags integerValue];
// bitshift: 1700000, bitshiftString: 19f0a0
NSLog(@"bitshift: %tx, bitshiftString: %tx", bitshift, bitshiftString);
将此字符串值扫描成 NSInteger
的最合适方法是什么?
事实证明这非常简单:
unsigned int bitshiftString;
[[NSScanner scannerWithString:flags] scanHexInt:&bitshiftString];