ネットワーク経由でバイトを渡すアプリを開発しています。サーバーはバイト順がビッグエンディアンであると宣言しています。私のアプリでは、データを 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];
例えば
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)];
メモリ ショートカット:
バイトをログアウトすると、次のようになります。highP = 70074112 lowP = 365573 正しい結果が得られません。誰か助けてください。
どんな助けでも大歓迎です!