3

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

2 回答 2

1

您的字节交换不正确。CFSwapInt32HostToBig()从“主机”字节序交换为大字节序。这是倒退。您可能打算使用CFSwapInt32BigToHost().

于 2013-03-13T17:29:03.247 回答
0

我有这个问题的答案。

遇到同样的问题:

  • 在这种情况下,长度不正确。在这种情况下,iOS 会继续读取和重写最后一个字节。
于 2014-05-15T03:20:15.837 回答