繁体   English   中英

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

[英]NSData getBytes provides different results in simulator than on device

我将数据从自编写的服务器后端发送到我的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);

你的字节交换不正确。 CFSwapInt32HostToBig()从“host”字节序切换到big-endian。 这是倒退。 您可能打算使用CFSwapInt32BigToHost()

我有这个问题的答案。

遇到同样的问题:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM