首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >操纵nsmutabledata

操纵nsmutabledata
EN

Stack Overflow用户
提问于 2012-02-26 20:57:07
回答 1查看 516关注 0票数 1

嗨,我试图创建一个包,我想通过网络发送到一个服务器,我已经得到了包排序,但它缺少一个长度标识符,我需要计算在我的方法结束,并添加到包。

数据包结构如下所示

引导值标识符(UInt16)

  • content size (UInt32)

  • packet Content (string)

目前,我的方法如下所示

代码语言:javascript
复制
- (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:,但我不能百分之百地确定如何使用它

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-26 21:10:03

这样就行了。

代码语言:javascript
复制
NSUInteger size = [registrationCodeData length];
NSData *sizeData = [NSData dataWithBytes:&size length:sizeof(size)];
[RegistrationCodeMutableData appendData:leadingValueData];
[RegistrationCodeMutableData appendData:sizeData];
[RegistrationCodeMutableData appendData:registrationCodeData];

同样值得注意的是,使用大写字母来开始变量名有点不典型,而且阅读起来可能会很混乱!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9457076

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档