6

タイトルはほとんどすべてを語っています。

(10 進数ではなく) 印刷したいのですが、unsigned char 値 (16 進数) で印刷します。例

unsigned char data[6] = {70,AF,80,1A, 01,7E};
NSLog(@"?",data); //need this output : 70 AF 80 1A 01 7E

何か案が?前もって感謝します。

4

3 に答える 3

4

char配列の書式指定子はありません。1 つのオプションはNSData、配列からオブジェクトを作成し、オブジェクトをログに記録するNSDataことです。

NSData *dataData = [NSData dataWithBytes:data length:sizeof(data)];
NSLog(@"data = %@", dataData);
于 2012-11-23T04:15:22.673 に答える
1

標準ライブラリには何も実行されないため、小さな16進ダンプ関数を記述したり、明確な完全なデータを出力する他の関数を使用したりできます。何かのようなもの:

char buf[1 + 3*dataLength];
strvisx(buf, data, dataLength, VIS_WHITE|VIS_HTTPSTYLE);
NSLog(@"data=%s", buf);

データの小さいチャンクの場合は、NSDataを作成し、debugDescriptionメソッドを使用することができます。これは現在16進ダンプですが、常に1つになるとは限りません。

于 2012-11-23T04:18:40.383 に答える
1

NSLog で char* を出力するには、以下を試してください。

char data[6] = {'H','E','L','L','0','\n'};
NSString *string = [[NSString alloc] initWithUTF8String:data];
NSLog(@"%@", string);

null文字列を終了する必要があります。

アップルのドキュメントから:

- (instancetype)initWithUTF8String:(const char *)nullTerminatedCString;

UTF8 でエンコードされたバイトの指定された C 配列から文字をコピーすることによって初期化された NSString オブジェクトを返します。

于 2014-07-29T02:39:19.430 に答える