2012年7月14日土曜日

UTF8の文字コードをUTF16に変換する処理

しばらく忙しすぎて更新できてなかった。
理由は、どスランプとか開発作業とか。
中核の処理は動くようになったが、まだiOSへの対応については手つかず。
ずっとWindowsのCygwin上で開発してたので、Xcodeも忘れてしまった(^_^)。
まずはその思い出しから始めないと。

ということで、超久しぶりの更新は、そのプログラム中で使っている処理を1つ。
UTF8の文字コードをUTF16に変換する処理。
ただし、UTF8で32ビットの範囲に収まるコードのみ。

UTFまわりの処理はインターネットで探しても 意外と見つからない。
最近はOSや言語レベルでサポートされているようで、
Cでの記述、というかフローが正確にわかる物が無かった。
ということで、公開。

ulong Utf8ToUtf16(ulong b)
{
 if (b<=0xff) return(b); // ASCII
 if (b<=0xffff) {
  return (        (b16(b) & 0x1f) << 6) + (b8(b) & 0x3f);
 }
 return ( ((b24(b) & 0xf) << 12) + ((b16(b) & 0x3f) << 6) + (b8(b) & 0x3f) );
}


0 件のコメント:

コメントを投稿