Objective-C:将十六进制字符串转换为整数以比较哪个更大

Cli*_*rum 1 hex objective-c nsscanner

我的目标是比较两个十六进制字符串并确定哪个数字更高.我假设我需要将这些十六进制字符串转换为整数,以便能够在数学上对它们进行比较,但转换unsigned为无效.这是我尝试过的:

NSString *firstHex = @"35c1f029684fe";
NSString *secondHex = @"35c1f029684ff";

unsigned first = 0;
unsigned second = 0;

NSScanner *firstScanner = [NSScanner scannerWithString:firstHex];
NSScanner *secondScanner = [NSScanner scannerWithString:secondHex];

[firstScanner scanHexInt:&first];
[secondScanner scanHexInt:&second];

NSLog(@"First: %d",first);
NSLog(@"Second: %d",second);
Run Code Online (Sandbox Code Playgroud)

但是日志输出给了我:

First: -1
Second: -1
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚我做错了什么.我NSScanner在这里使用得当吗?提前致谢.

CRD*_*CRD 6

您的十六进制数字长度为13位 - 52位二进制位.这比32位长,使用long long变量而scanHexLongLong:不是.