0

ネットワーク経由でバイトを渡すアプリを開発しています。サーバーはバイト順がビッグエンディアンであると宣言しています。私のアプリでは、データを 2 バイトのヘッダーでラップし、次のようにバイトを割り当てます。

int length = [self.dataLengthHeader length];
if (length <= 255) {
    high = 0;
    low = length;
}else if (length == 256)
{
    high = 1;
    low = 0;
}else {
    high = length/256;
    low = length%256;
}
Byte byte[] = {high, low};
NSLog(@"%hhu  %hhu", high, low);
NSMutableData *dataToSend = [NSMutableData dataWithBytes:byte length:2];

例えば最初のバイトは 00、2 番目のバイトは 05

1バイト目は00(8ビット)、2バイト目は05(8ビット)

別のアプリがヘッダーを受け取ると、2 バイトを 2 つの int (2 つの NSInteger が望ましい) にするヘッダーを解析して、実際のメッセージの情報を取得します。

NSData *twoBytes = [NSData dataWithBytes:payloadptr length:2];

NSData *low = [twoBytes subdataWithRange:NSMakeRange(1, 1)];
int lowP;
[low getBytes:&lowP length:sizeof(lowP)];

NSData *high = [twoBytes subdataWithRange:NSMakeRange(0, 1)];
int highP;
[high getBytes:&highP length:sizeof(highP)];

メモリ ショートカット:最初のバイト

2番目のバイト

バイトをログアウトすると、次のようになります。highP = 70074112 lowP = 365573 正しい結果が得られません。誰か助けてください。

どんな助けでも大歓迎です!

4

1 に答える 1