В следующем коде я получаю ожидаемые результаты
- (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 Iкажется, теряется дополнительный байт в потоке.
Я в порядке с использованием 0,3 - но мне интересно, почему это происходит, потому что с заменами 2 и 8 байтов я не получаю такое поведение.