您好我正在尝试创建一个我想通过网络发送到服务器的数据包,我几乎已经将数据包排序但是它缺少一个长度标识符,我需要在我的方法结束时计算并添加进入数据包。
数据包结构就像这样
目前我的方法看起来像这样
- (NSMutableData *) addRegCode
{
//Supply some default string for testing
NSString *regCode = [[NSString alloc] initWithString:@"abcd1"];
//create NSData object
NSData *registrationCodeData = [regCode dataUsingEncoding:NSUTF8StringEncoding];
NSMutableData * RegistrationCodeMutableData = [[NSMutableData alloc] init]; //send this object
//create leading value
UInt16 leadingValue = 8;
NSData * leadingValueData = [[NSData alloc] initWithBytes:&leadingValue length:sizeof(leadingValue)];
//append data to mutableData
[RegistrationCodeMutableData appendData:leadingValueData];
[RegistrationCodeMutableData appendData:registrationCodeData];
return RegistrationCodeMutableData;
}
我想知道的是如何计算 registrationCodeData 的大小,然后在我附加 leadingValueData&的位置之间添加它。 registrationCodeData
我想我必须使用 dataWithBytes:length:,但我不是100%肯定如何使用这个
答案 0 :(得分:1)
这应该这样做。
NSUInteger size = [registrationCodeData length];
NSData *sizeData = [NSData dataWithBytes:&size length:sizeof(size)];
[RegistrationCodeMutableData appendData:leadingValueData];
[RegistrationCodeMutableData appendData:sizeData];
[RegistrationCodeMutableData appendData:registrationCodeData];
另外注意使用大写字母来启动变量名称有点不典型,可能会令人困惑阅读!