在目标c中将许多字节数组合并为一个字节数组

时间:2013-05-19 02:14:35

标签: objective-c

我已使用NSMutableData合并字节数组

    NSMutableData *payload;
    payload = [[NSMutableData alloc] init];

[payload appendBytes:CFBridgingRetain((cm.msgBytes)) length:[cm.msgBytes length]];

NSString *cmdata = [[NSString alloc] initWithData:[payload mutableBytes] encoding:NSUTF8StringEncoding];

我希望继续添加payload直到完成

cmdata始终为零

initWithDataNSData所以我将字节转换为NSData,但结果仍然相同

 NSData *bytesData = [NSData dataWithBytes:[payload mutableBytes] length:[payload length]];

 NSString *cmdata = [[NSString alloc] initWithData:bytesData encoding:NSUTF8StringEncoding];

2 个答案:

答案 0 :(得分:3)

我认为你在几个地方混淆了一些东西。 API表示“字节”,它说的是C字节数组;在它说“数据”的地方,它谈论的是NSData对象。

假设cm.msgBytes是一个NSData对象,看起来它是您检索到的.length,则此代码的更好版本将是:

NSMutableData *payload;
payload = [[NSMutableData alloc] init];

[payload appendData:cm.msgBytes];

NSString *cmdata = [[NSString alloc] initWithData:payload encoding:NSUTF8StringEncoding];

如果你写了cm所属的课程,你应该将msgBytes重命名为msgData(甚至messageData),以便更好地匹配API。

答案 1 :(得分:0)

initWithData采用NSData而非字节本身

NSString *cmdata = [[NSString alloc] initWithData:payload encoding:NSUTF8StringEncoding];