我有一个包含数据的 NSData 数据包。我需要将 8, 1 范围内的字节转换为 int。要获取该位置的数据,我执行以下操作。
NSData *byte = [packet subdataWithRange:NSMakeRange(8, 1)];
如果我 NSLog 字节
<01>
我如何将其转换为 int?这可能是最基本的问题,但我只是没有做对。
任何帮助,将不胜感激。
更新
有了这些数据,int 应该等于 1。我不确定这是否与 Endian 有任何关系。
我有一个包含数据的 NSData 数据包。我需要将 8, 1 范围内的字节转换为 int。要获取该位置的数据,我执行以下操作。
NSData *byte = [packet subdataWithRange:NSMakeRange(8, 1)];
如果我 NSLog 字节
<01>
我如何将其转换为 int?这可能是最基本的问题,但我只是没有做对。
任何帮助,将不胜感激。
更新
有了这些数据,int 应该等于 1。我不确定这是否与 Endian 有任何关系。
使用-[NSData bytes]获取原始缓冲区并从中读取
int i = *((char *)[byte bytes])
char buff;
[bytes getBytes:&buff length:1];
int i = buff;
确保您正在从char *
not读取int *
,否则您正在访问无效的内存位置,这可能会或可能不会崩溃或提供正确的结果。