在下面的代码中,我得到了预期的结果
- (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字节替换我不会出现这种情况。