read と sysread の違い
シナリオローダのコーディング中、もひとつ気になってたこと。
デコード前のファイルをバイナリで丸ごと読み込む場合に、read と sysread のどっちを使えばええのかっちゅう問題。
とりあえずリファレンスを引くと、違いはバッファリングの有無とある。バッファリング有りの read の方が処理が早そうな気もするが、とりあえずバイナリだから、より低レベルっぽいニヨイがする sysread にしておいた。出力を見たら問題なさそうだったので、それ以上弄らずに先へ進んだ。
しかし実際のところどうなのか気になってたので、該当個所を read に書き換えて出力、fc をとってみた。結果↓
http://www.geocities.jp/den_dro_gram/result.txt
「共演者」が「共猿メ」に化けている。いや化けてるんじゃなくて、バイトが削られてる模様。やっぱり。「演」のコードが SJIS で 0x8989、でもってデコード前の値は 0x84 で XOR だから 0x0D。「者」の上位バイトが 0x8E、0x84 の XOR で 0x0A。
予想通り、read 命令は
つーか、そんなことも知らないでシナリオローダとか作ってんじゃねえよって感じ? 知らずに地雷を回避している俺ってスゲーとか密かに思ってる私は、多分一生未熟者。