将 1 个字节转换为 int Objective-C

sba*_*row 3 c byte objective-c

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

NSData *byte = [packet subdataWithRange:NSMakeRange(8, 1)];
Run Code Online (Sandbox Code Playgroud)

如果我 NSLog 字节

<01>
Run Code Online (Sandbox Code Playgroud)

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

任何帮助,将不胜感激。

更新

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

Bry*_*hen 5

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

int i = *((char *)[byte bytes])
Run Code Online (Sandbox Code Playgroud)

或使用-[NSData getBytes:length:]

char buff;
[bytes getBytes:&buff length:1];
int i = buff;
Run Code Online (Sandbox Code Playgroud)

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