嗨,我试图创建一个包,我想通过网络发送到一个服务器,我已经得到了包排序,但它缺少一个长度标识符,我需要计算在我的方法结束,并添加到包。
数据包结构如下所示
引导值标识符(UInt16)
目前,我的方法如下所示
- (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:,但我不能百分之百地确定如何使用它
发布于 2012-02-26 21:10:03
这样就行了。
NSUInteger size = [registrationCodeData length];
NSData *sizeData = [NSData dataWithBytes:&size length:sizeof(size)];
[RegistrationCodeMutableData appendData:leadingValueData];
[RegistrationCodeMutableData appendData:sizeData];
[RegistrationCodeMutableData appendData:registrationCodeData];同样值得注意的是,使用大写字母来开始变量名有点不典型,而且阅读起来可能会很混乱!
https://stackoverflow.com/questions/9457076
复制相似问题