NSString
からUnicode値を取得する最も簡単な方法は何ですか?例えば、NSStringのUnicodeポイントを取得して別のNSStringに入れよう
NSString *str = "A";
NSString *hex;
は今、私はどのように私はそれをやって行くだろう... str
(すなわち0041)のUnicode値にhex
の値を設定したいですか?
NSString
からUnicode値を取得する最も簡単な方法は何ですか?例えば、NSStringのUnicodeポイントを取得して別のNSStringに入れよう
NSString *str = "A";
NSString *hex;
は今、私はどのように私はそれをやって行くだろう... str
(すなわち0041)のUnicode値にhex
の値を設定したいですか?
unichar
タイプは(間接的description of the %C specifierに記載されているように、例えば)16ビットのUnicode値になるように定義され、そしてあなたがcharacterAtIndex:
を使用してNSString
内の指定された位置からunichar
を取得、または必要に応じgetCharacters:range:
を使用することができますNSString
からunicharsのC配列を1つ1つずつクエリするよりも速く満たすことができます。
NSUTF32StringEncoding
も有効な文字列エンコーディングであり、今後の絶対的な証明が必要な場合に備えて、いくつかのエンディアン固有のバリエーションもあります。より長い世代のgetBytes:maxLength:usedLength:encoding:options:range:remainingRange:
を使用しているC配列を取得できます。
EDIT:so。
NSString *str = @"A";
NSLog(@"16-bit unicode values are:");
for(int index = 0; index < [str length]; index++)
NSLog(@"%04x", [str characterAtIndex:index]);
あなたはあなたがまたはNSUTF32StringEncoding、または他の多くの値(NSUnicodeStringEncodingと同じ)NSUTF8StringEncoding、NSUTF16StringEncodingによってNSUnicodeStringEncodingを置き換えることが
NSData * u = [str dataUsingEncoding:NSUnicodeStringEncoding];
NSString *hex = [u description];
を使用することができます。
は
クールな代替品。 'NSData'に関連するデータを保持する1つのアトミックなブロックのメモリが含まれているので、' bytes'プロパティを取得してCの配列として適切にキャストすることができます。 「長さ」に注意を払うように注意してください。これは自分のバッファを割り当て、 'getBytes:maxLength:... 'を使って32ビットUTFコードの配列を取得するよりはるかにクリーンな方法です。 – Tommy
は、うーん、迅速な対応に感謝しますが、しかし、私がobj-Cに新たな種類のだ多くのためhere を参照してください。コードスニペット/サンプルの使用法を教えてください。 – citruspi
私が 'code'NSString * hexValue = [NSString stringWithFormat:@"%C "、@" <"];' code'を実行したとき、私は棰 – citruspi
を取得するので、 '@" <"'は文字列であり、 '%C'はリテラルを期待しています。 Objective-Cのオブジェクト指向の世界とCの文字通りの古い世界との間のフォールト・ラインに落ち着きました。オブジェクトを指定するには '%@'を使い、オブジェクトを指定するには '<'を使います。なぜなら、ソースコードのUnicode文字は、(NSStringは完全にUnicodeであるにもかかわらず、実行時の問題ではなくツールチェーンの問題だからです)コンパイル時に必ずしも生き残るわけではないからです。 – Tommy