NSMakeRange - replaceBytesInRange问​​题

时间:2010-11-13 21:42:44

标签: objective-c replace range

在下面的代码中,我得到了预期的结果

- (int)getInt{
 NSRange intRange = NSMakeRange(0,3);

 char buffer[4];
 [stream getBytes:buffer range:intRange];

 [stream replaceBytesInRange:NSMakeRange(0, 3) withBytes:NULL length:0];

 return (int) (
      (((int)buffer[0] & 0xffff) << 24) |
      (((int)buffer[1] & 0xffff) << 16) |
      (((int)buffer[2] & 0xffff) << 8) |
       ((int)buffer[3] & 0xffff) );


}

如果我将intRange更改为0,4我得到了预期的结果。

如果我将replaceBytesInRange更改为0,4我似乎在流中丢失了一个额外的字节。

我可以使用0,3 - 但我想知道为什么会发生这种情况,因为使用2和8字节替换我不会出现这种情况。

0 个答案:

没有答案