从iOS中的字节中提取int

时间:2014-12-10 05:02:59

标签: ios nsdata

我正在尝试从PDF中的“FontFile2”构建CMap。

我知道BigEndian存储在NSData对象中的字节数。 我想将前4个字节读作原始数据。 然后我想将以下8个字节读作4个无符号短路。

然后我想将以下16个字节读作4字节字符串,后跟3个无符号长整数。 然后可能还有几个4字节的字符串,后跟三个无符号长整数。

修改

  NSData* subdata = [stream subdataWithRange:NSMakeRange(0, 4)];
    const unsigned char *bytes = [subdata bytes];
    int test = *(int*)bytes;

我尝试将前4个字节作为简短读取失败。 似乎将数据分解为一堆子数据对象过于复杂。他们必须更容易......

由于

1 个答案:

答案 0 :(得分:1)

通常,如果要读取字节,则应创建NSInteger来存储读取字节的位置。

例如,这是您阅读short

的方式
@property NSInteger position;

NSData *yourData;

short extractedShort;
[yourData getBytes:&temp range:NSMakeRange(self.position, sizeof(extractedShort))];
self.position += sizeof(extractedShort);

阅读intNSStringfloatlong ...值相似