Bruce.さん < こん??は でび です
On Wed, 24 Dec 2008 04:53:32 +0900
"davi" <davi-1984@...> wrote:
> パソ通時代のプログラマは、やっぱり偉かったんだなぁ。
に関連してなんですが、元のソースだと、
> if ((dt = Buf[list_s]) > 0xff)
> putchar((dt >> 8) | 0x80);
> if ((Buf[op] & 0x8000) != 0) {
> Buf[tmp_op] &= ~0x8000;
のように、0x80や0xffや0x8000が頻出します。
これって多分、S-JIS対応させるための処理とかなんでしょうけど、
0x80や0xffや0x8000は、それぞれ、如何なる意味で重要なのでしょうか?
0x80はS-JISやJISでのASCII文字の最後。
0xffはS-JISやJISでの半角部分(ASCII文字+半角カタカナ)の最後。
という意味かな?と想像しましたが、それでOK?
(なお、昔、PerlCGIとかで泣かされた、いわゆる「ダメ文字」処理の
ようなものは入っていないようです。)
あと、0x8000の意味がどうしてもわかりません。
10進に直しても、32768って数字には1024とか256みたいなキリの良さげな
感じがありません。
S-JISで漢字開始なら8140とすべきだろうし、JISなら2120か2121だろうよ、と…。
でも、常に読み込んだ文字列に付け足すとか、|で選択して0と比較するとか、
そんな処理が頻出しているので、漢字コードの範囲指定ではなさそうな気も…。
でび http://davi.txt-nifty.com/1984/