NSMakeRange - replaceBytesInRange Вопрос - PullRequest
2 голосов
/ 14 ноября 2010

В следующем коде я получаю ожидаемые результаты

- (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 байтов я не получаю такое поведение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...