2013-03-13 63 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会一直读取并重写最后一个字节。
相关问题