无法将NSData转换为int

时间:2014-02-04 15:47:34

标签: ios int hex decimal nsdata

我有一个只包含<64>的NSData对象,它应该代表int 100 如何将此NSData转换为int?

我可以使用

将其转换为Chr等效d
NSString *string = [[NSString alloc] initWithData:characteristic.value encoding:NSUTF8StringEncoding];

但我需要Dec相当于100

由于

3 个答案:

答案 0 :(得分:9)

<64>表示NSData对象包含值为0x64 = 100的单个字节, 所以以下内容应该有效;

const uint8_t *bytes = [data bytes]; // pointer to the bytes in data
int value = bytes[0]; // first byte

答案 1 :(得分:0)

int *b = (int *)data.bytes;
printf("%d",*b); //prints 100

答案 2 :(得分:0)

下面的逻辑将NSData转换为整数perefctly。字节长度无关紧要。它只是有效。

NSData *data;
NSString *stringData = [data description];
stringData = [stringData substringWithRange:NSMakeRange(1, [stringData length]-2)];

unsigned dataAsInt = 0;
NSScanner *scanner = [NSScanner scannerWithString: stringData];
[scanner scanHexInt:& dataAsInt];