忍者ブログ
[228] [227] [226] [225] [224] [223] [222] [221] [220] [219] [218]

DATE : 2017/10/21 (Sat)
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。


DATE : 2006/12/11 (Mon)

BREW には、文字型が2種類あります。1バイトの文字を表す文字型と、2バイトの文字を表すワイド文字型です。具体的には、以下に示す型で定義されています。

文字の種類
1バイト文字 char
ワイド文字 AECHAR(符号なし2バイト整数)

ワイド文字も1バイト文字同様、文字列の末尾はヌル(0)です。

BREW では、文字列のエンコーディングは機種依存です。ただ、日本の機種では Shift_JIS が多いようです。

1バイト文字からワイド文字への変換を行うには、STREXPAND 関数(AEEStdLib.h)を使用します。char 値はそのままに、1バイト文字が2バイトに拡張されてワイド文字となります。2バイト文字はそのままワイド文字になります。

逆に、ワイド文字から1バイト文字への変換には WSTRCOMPRESS 関数を使用します。

以下は、STREXPAND 関数を使用するサンプルコードです。

char string = "文字列";
AECHAR wideString[4];

STREXPAND((const byte*) string, STRLEN(string),
    wideString, 4 * sizeof(AECHAR));

(BREW 3.1.2 API リファレンスでは、STREXPAND 関数の第1引数は const char* 型と表記されていますが、実際には const byte* 型です。ここで、byte 型は unsigned char と定義されています)

ちなみに、紛らわしい関数に STRTOWSTR 関数と WSTRTOSTR 関数があります。STRTOWSTR は文字列の1バイト1バイトを全てワイド文字に変換します。つまり2バイト文字の1文字がワイド文字2文字に変換されてしまいます。WSTRTOSTR 関数は、その逆です。

そのため、1バイト文字と2バイト文字とが混在した文字列とワイド文字列との変換には、STREXPAND 関数と WSTRCOMPRESS 関数を使用します。

また、UTF8TOWSTR という関数もあります。一見、UTF-8 から機種に合った文字エンコーディングに変換する関数のような気もしますが、実際には UTF-8 から UTF-16 に変換する関数です。

参考文献

PR
●この記事にコメントする
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード
●この記事へのトラックバック
この記事にトラックバックする:
忍者ブログ [PR]
ブログ内検索
最近の状況
リンク
カレンダー
09 2017/10 11
S M T W T F S
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
使用許諾
最新コメント
(08/15)
(05/04)
(03/06)
(03/04)
(09/25)
最新トラックバック
T/O
(11/05)
ブログ内検索
最近の状況
リンク
カレンダー
09 2017/10 11
S M T W T F S
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
使用許諾
最新コメント
(08/15)
(05/04)
(03/06)
(03/04)
(09/25)
最新トラックバック
T/O
(11/05)