簡體   English   中英

操縱nsmutabledata

[英]manipulating nsmutabledata

嗨,我正在嘗試創建一個要通過網絡發送到服務器的數據包,我已經對數據包進行了排序,但是缺少一個長度標識符,我需要在方法末尾計算並添加到該數據包中。

包的結構是這樣的

  • 前導值標識符(UInt16)
  • 內容大小(UInt32)
  • 包內容(字符串)

目前我的方法看起來像這樣

- (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:但我不確定如何使用此功能

這應該做到。

NSUInteger size = [registrationCodeData length];
NSData *sizeData = [NSData dataWithBytes:&size length:sizeof(size)];
[RegistrationCodeMutableData appendData:leadingValueData];
[RegistrationCodeMutableData appendData:sizeData];
[RegistrationCodeMutableData appendData:registrationCodeData];

還需要注意的是,使用大寫字母開頭的變量名有點不典型,並且可能使閱讀混淆!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM