我已使用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始终为零
initWithData
取NSData
所以我将字节转换为NSData
,但结果仍然相同
NSData *bytesData = [NSData dataWithBytes:[payload mutableBytes] length:[payload length]];
NSString *cmdata = [[NSString alloc] initWithData:bytesData encoding:NSUTF8StringEncoding];
答案 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];