1

私は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 は常に nil です

と同じようにバイトを変換しましたinitWithDataが、結果は同じですNSDataNSData

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

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

2 に答える 2

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所属するクラスを記述した場合は、API とより一致するように名前msgBytesmsgData(または) に変更する必要があります。messageData

于 2013-05-19T02:43:00.997 に答える
0

initWithData はバイト自体ではなく NSData を取ります

NSString *cmdata = [[NSString alloc] initWithData:payload encoding:NSUTF8StringEncoding];
于 2013-05-19T02:16:48.897 に答える