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 に答える