3

我有一个包含数据的 NSData 数据包。我需要将 8, 1 范围内的字节转换为 int。要获取该位置的数据,我执行以下操作。

NSData *byte = [packet subdataWithRange:NSMakeRange(8, 1)];

如果我 NSLog 字节

<01>

我如何将其转换为 int?这可能是最基本的问题,但我只是没有做对。

任何帮助,将不胜感激。

更新

有了这些数据,int 应该等于 1。我不确定这是否与 Endian 有任何关系。

4

1 回答 1

5

使用-[NSData bytes]获取原始缓冲区并从中读取

int i = *((char *)[byte bytes])

或使用-[NSData getBytes:length:]

char buff;
[bytes getBytes:&buff length:1];
int i = buff;

确保您正在从char *not读取int *,否则您正在访问无效的内存位置,这可能会或可能不会崩溃或提供正确的结果。

于 2013-11-11T09:29:24.113 回答