【发布时间】:2014-10-19 19:46:16
【问题描述】:
我有一个 8 位十六进制值,例如:“FB”(-5)。现在我需要这个十六进制的有符号整数值。 NSScanner 不能在这个地方工作,因为你需要一个 4 字节的十六进制值,才能得到它的负数。在我开始进行一些操作之前,也许你们中的某些人知道更好的方法?
【问题讨论】:
标签: objective-c hex nsscanner
我有一个 8 位十六进制值,例如:“FB”(-5)。现在我需要这个十六进制的有符号整数值。 NSScanner 不能在这个地方工作,因为你需要一个 4 字节的十六进制值,才能得到它的负数。在我开始进行一些操作之前,也许你们中的某些人知道更好的方法?
【问题讨论】:
标签: objective-c hex nsscanner
类型转换并不安全,但你确实需要它。
NSString *tempNumber = @"FB";
NSScanner *scanner = [NSScanner scannerWithString:tempNumber];
unsigned int temp;
[scanner scanHexInt:&temp];
int actualInt = (char)temp; //why char because you have 8 bit integer
NSLog(@"%@:%d:%d",tempNumber, temp, actualInt);
控制台输出:FB:251:-5
【讨论】:
16 bit 整数,您可以将其转换为 short int,即“16 位”(在 32 位模拟器和 64 位模拟器上测试)。尽管short int 的大小取决于编译器的实现。一般是short int <= int <= long int