2013-03-13 1 views
3

Я отправляю данные с самописного сервера на мое устройство iOS. Приложение отлично работает в iOS Simulator, но не на устройстве. Например: я отправляю целое значение 4 - на Симулятор я получаю 4, но на устройстве это 1024. Я искал весь интернет, но не нашел никакого решения, так что, может быть, кто-то может мне помочь здесь. Я не думаю, что это вопрос, связанный с эндией, и я уже обратил на это внимание.NSData getBytes предоставляет разные результаты в симуляторе, чем на устройстве

Это код:

int someintvalue = 0; 

uint8_t firstBuffer[4]; 

[inputStream read:firstBuffer maxLength: sizeof(firstBuffer)]; 
NSMutableData *data1 = [[NSMutableData alloc] initWithBytes:firstBuffer 
                length:sizeof(firstBuffer)]; 

NSRange rng = NSMakeRange(0, 4); 
[data1 getBytes:&someintvalue range:rng]; 


someintvalue = CFSwapInt32HostToBig(someintvalue); 
NSLog(@"Got %i Value", someintvalue); 

ответ

1

Ты байт замены неправильно. CFSwapInt32HostToBig() свопинг с «хозяином» энсианства до big-endian. Это назад. Вероятно, вы использовали CFSwapInt32BigToHost().

+0

Спасибо за ответ - к сожалению, это не исправить мою проблему ... Я попытался изменить его, но на самом деле он ничего не меняет. В симуляторе все еще отлично работает - на устройстве я получаю неправильные значения –

0

У меня есть ответ на эту проблему.

Ран в тот же вопрос:

  • Длина неверен в данном случае. В этом случае iOS продолжает чтение и переписывание последнего байта.
Смежные вопросы