数据:
<5b005c00 5d005e00 5f006000 61006200 63006400>
输出:6029403
以上数据长度为20bytes,返回值范围为0-100,
我使用的代码:
ppData = [ppData subdataWithRange:NSMakeRange(0, 20)];
int value = *(int*)([ppData bytes]);
NSLog(@"int rec %d",value);
最佳答案
您的数据似乎是 10 个 16 位整数:91, 92, ..., 100;以小端格式排列。 MacOS 和 iOS 是小端[*],因此要获取 int
形式的第一个值,请将代码更改为:
int value = *(int16_t *)ppData.bytes;
(Objective-)C 语言本身负责将 int16_t
值从 RHS 转换为 int
(MacOS/iOS 上为 32 位)值需要存储到value
中。
HTH
[*] 当平台和数据字节顺序不同时,您需要调用通常提供的适当的字节交换函数。
关于ios - 在 iOS 中将 NSData 转换为 Int 返回垃圾值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58596192/