|
■No29885 TTTさん > 1行が512バイトのデータを作成したいということです。 > 漢字が含まれる項目についてJISに変換したいです。
あ、いや、そういうことじゃなくて。。。もっと具体的に書いた方が良かったですね。済みません。 例えば、「第1章」という文字列の場合、Shift-JIS では 0x91, 0xe6, 0x31, 0x8f, 0xcd ですが、JIS (ISO-2022-JP) では 0x1b, 0x24, 0x42, 0x42, 0x68, 0x1b, 0x28, 0x42, 0x31, 0x1b, 0x24, 0x42, 0x3e, 0x4f となります。このうち 0x1b から始まる3バイトは、エスケープ シーケンスです。なお、エスケープ シーケンスは、文字がどの位置にあるかで異なるシーケンスとなるようで、上のコードは正しいとは限りません。 この例では、2バイト文字1バイト文字2バイト文字と持ってきたので、合計9バイトのエスケープ シーケンスが混入しています(「ESC 文字 ESC 文字 ESC 文字」となるので)。しかし、同じ文字数であっても、2バイト文字、2バイト文字、1バイト文字であれば、エスケープ シーケンスは6バイトで済みます(「ESC 文字 文字 ESC 文字」となるので)。 すなわち、文字の組み合わせによって、同じ文字数でもバイト数が異なります。よって、「1行が512バイトのデータ」といわれても、その範囲に収めることが出来るかどうかは、どのような文字列を変換するかによって変わってきます。また、当然「512バイトに満たない部分はどうするか」ということも、考えなければなりません。
|