NSData getBytes在模拟器中提供的结果与在设备上的结果不同

时间:2013-03-13 15:37:10

标签: iphone ios nsdata

我将数据从自编写的服务器后端发送到我的iOS设备。 该应用程序在iOS模拟器中正常工作,但在设备上无法正常工作。 例如:我发送整数值4 - 在模拟器上我得到4但在设备上它是1024.我搜索了整个互联网但没有找到任何解决方案,所以也许有人可以在这里帮助我。我不认为这是一个期末问题,因为我已经注意到了它。

这是代码:

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);

2 个答案:

答案 0 :(得分:1)

您的字节交换错误。 CFSwapInt32HostToBig()从“主机”字节序转换为big-endian。这是倒退。您可能打算使用CFSwapInt32BigToHost()

答案 1 :(得分:0)

我对这个问题有一个答案。

遇到同样的问题:

  • 在这种情况下长度不正确。在这种情况下,iOS会继续读取和重写最后一个字节。