5

私はこれがかなり前に尋ねられたことを知っています、そして私はすでにいくつかのアプローチに従いました、しかしそれらはうまくいきません。

以下は私がすでに試したことです:

NSString *newStr = [NSString stringWithUTF8String:[responseData bytes]];
NSString *newStr = [NSString stringWithFormat:@"%.*s", [responseData length], [responseData bytes]];

それらのどれも動作しません。最初のケースでは、newStrをnullで埋めます。2番目では、ジャンク文字で埋められます。デバッガログ(po responseData)から、bbbbbb00bbbbbbのような有効な応答が得られることがわかります。[サーバーはそれらをバイト配列として送信します]

何をすべきか?

編集:私はhttpリクエストレスポンスからこのデータを受け取っています-誰かがその行で助けることができる場合に備えて、ASIHTTPRequestライブラリを使用しています。

4

6 に答える 6

13

これを試して、

NSData *responseData; [Initialize it]
NSString *receivedDataString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding]; 
NSLog(@"%@",receivedDataString);
于 2013-01-22T11:18:10.630 に答える
3

重複を見つけてこれを閉じるために投票したため、記録のためにこれを投稿しています。

実際、私が受け取っているのは 16 進数で表されるバイトのストリームであり、示されているすべての回答が機能しません。[NSData の説明] だけが真のデータを提供してくれましたが、これはデバッグ用であるため使用できません。

最後に、ここに記載されている解決策を試しましたが、必要なものが得られました。助けてくれてありがとう。

于 2013-01-22T11:29:02.673 に答える
3

このコード行を使用できます

NSString *str=[[NSString alloc] initWithBytes:data1.bytes length:data1.length encoding:NSUTF8StringEncoding];
于 2013-01-22T11:00:39.310 に答える
3

次のコードを試してください

NSString *string = [[[NSString alloc] initWithData: responseData.bytes encoding:NSUTF8StringEncoding] autorelease];
于 2013-01-22T10:59:51.567 に答える
2
NSString  *image1Data = [[NSData dataWithData:myData] encodeBase64ForData];

ただし、これには NSData+Base64Additions クラスを使用する必要があります。

于 2013-01-22T12:12:26.710 に答える