我正在开发一个通过网络传递字节的应用程序,服务器声明它的字节顺序是 Big-Endian。在我的应用程序中,我用一个需要 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(8 位),第二个是 05(8 位)
当另一个应用程序接收到标头时,它将需要 2 个字节的标头解析为两个 int(两个 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 我永远无法得到正确的结果,有人可以帮助我吗?
任何帮助,将不胜感激!