2013-03-13 77 views
3

我正在從自寫服務器後端向我的iOS設備發送數據。 該應用程序在iOS模擬器中正常工作,但不在設備上。 例如:我發送整數值4 - 在模擬器上,我得到4,但在設備上它是1024.我搜索了整個互聯網,但沒有找到任何解決方案,所以也許有人可以幫助我。我不認爲這是一個endian問題,因爲我已經注意到它。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()從「主機」排列順序切換到大端排列順序。這是倒退。你可能打算使用CFSwapInt32BigToHost()

+0

感謝您的回答 - 不幸的是它不能解決我的問題......我試圖改變它,但實際上它並沒有改變任何東西。在模擬器中它仍然正常工作 - 在設備上我得到錯誤的值 – 2013-03-13 20:16:57

0

我有這個問題的答案。

遇到同樣的問題:

  • 長度在這種情況下不正確。在這種情況下,iOS會一直讀取並重寫最後一個字節。
相關問題