ios - 在 iOS 中将 NSData 转换为 Int 返回垃圾值

标签 ios objective-c nsdata

数据:

<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/

相关文章:

ios - 及时准确的连续数据算法

ios - 直接使用 SSZipArchive 压缩 NSData 不工作

ios - 将数据转换为图像,然后将图像的数据增加数据

ios - 将 UILongPressGestureRecognizer 添加到自定义 UITableViewCell 中的 UIButton

objective-c - 将实现协议(protocol)的 Swift 类导入 Objective-C 类

iphone - 关于 plist 的快速问题

ios - 在 Objective-C(iOS) 的模态序列中实现 SDWebImage

swift - 使用未解析的标识符 'sizeof'

ios - 类型 "ViewController"不符合协议(protocol) 'UITableViewDataSource"

iphone - 用于 Objective-C 的 Orkut/Flickr 框架