-1

0 ~ 255 のすべての 16 進文字を表示しようとしています。0x00 から 0x7f までのバイナリ データを表すことができますが、0x7f を超えると、ある種の UTF フォーマットを実行しているように見え、C の追加を開始します。これが私がこれを行う方法です」

unichar value = 0;

for (value = 0; value < 255; value++) {

    [test writeExample:[NSString stringWithFormat:@"%C", value]];
}

0x7f の後に適切な 16 進数を表示し続けるようにこれを変更する方法を知っている人はいますか? %c で char を、%C で unichar を試しました。0x00 から 0x7f までは表現できましたが、拡張 ASCII 文字 0x80 から 0xFF までは表現できませんでした。

4

1 に答える 1

1

あなたの質問とApple Dev Docs on String Formattersに関する私の理解に基づいて、整数を 16 進値として表す場合に使用する適切な文字列フォーマッタは、 formatter を使用することです%x。話の終わり。

問題はあなたのwriteExample:方法にあるようです。したがって、おそらく次のような方法を試す必要があります。

- (void)writeExample:(unichar)value
{
    NSLog(@"0x%02x", value);
}

完璧ではないかもしれませんが、少なくとも出発点です。それは16進表現を出力します。

文字列として送信したい場合は、次のことができます。メソッドを次のように変更するだけです。

- (void)writeExample:(NSString*)value
{
    unichar val = [value intValue];
    NSLog(@"0x%02x", val);
}

%dの代わりにフォーマットを使用して文字列を送信します%c

[test writeExample:[NSString stringWithFormat:@"%d", value]];

これ以上の詳細はありませんが、これが私があなたに提供できる最善の答えです。詳細をお知らせいただければ、何が起こっているのかを正確に把握できるように、喜んで回答を編集します。

于 2013-06-17T23:18:36.180 に答える