1

私は現在、「U + 0008」のような文字列としてUTF-8文字の入力を受け取るObjective Cプログラムを開発しています。これらの文字列は NSString 型です。次に、この文字を表すこの文字列を、対応する UniChar (0x0008) に変換する必要があります。

これを行うエレガントな方法を知っていますか?

ありがとう!ペドロ

4

1 に答える 1

1

xが 16 進数でNSStringある形式の@"U+xxxx"がある場合、値を取得する 2 つの方法を以下に示します。それぞれの「優雅さ」は見る人の目にあります。

a) を使用しNSScannerます。メソッドscanString:intoStringを使用して をチェックし、U+メソッドを使用scanHexInt:して 16 進値を読み込み、メソッドisAtEndを使用して 16 進値の後に何も残っていないことを確認できます。このメソッドは、16 進数を最大 4 桁に制限しません。

b)sscanfまたはを使用しstrtolます。NSStringこれらは C レベルの API です。使用してから C 文字列を取得できますUTF8String。をscanfチェックしてU+、1行に設定された最大桁数で16進数を読み取ることができます-それが「エレガント」の定義である場合。ただし、すべての入力が消費されていることを確認するには、少し考える必要があります。

これを行う方法は他にもたくさんあります。自分で作成する方法から、正規表現 ( NSRegularExpression) を使用して形式をチェックし、4 つの 16 進数を一度に抽出して整数に変換する方法まで、さまざまな方法があります。

4 つの 16 進数が表示されている場合は、16 ビットの値であり、UTF-8 よりも UTF-16 に近いことに注意してください。

于 2014-03-27T00:34:54.300 に答える