>>287 >>287 >変換方法は幾らもある。
変換方法が単一でないことは当然でしょ。
ただ問題対象の特徴を度外視して2次元領域の変換方法として
乗除算を用いているのを採用する理由が解らないがね。
<録音先生 Part31 426より>
i=((a[0]-0x021)*0x05e)+a[1]-0x021;
ia=i / 0x0bc;
ib=i % 0x0bc;
と
unsignd char ia,ib;
ia = a[0] - 0x21;
ib = a[1] - 0x21;
if (ia & 1)
ib += 0x5e;
ia >>= 1;
を比較して後者が著しくプログラムの可読性が低いもの
とは思えないが。
録音先生自身が引用した資料
http://www.unixuser.org/~euske/doc/kanjicode/ と照らし合わせても素直なソースだろ。
それとも録音先生は後者では理解出来なくなるのですか?
それなら次のソースなど全く理解出来なくなるだろうね。
unsigned short int jis2sjis(unsigned short int code)
{
unsinged short int first;
unsigned char second;
first = (((code - 0x5f00) >> 1) & 0x7f00) ^ 0xe000;
second = (code & 0xff) + ((code & 0x100)? 0x1f : 0x7d);
return (first + second + ((second < 0x7f) ? 0 : 1));
}
それとIA-32以外のCPU環境でのことはまったく考えていないと
いうことでよろしいですか?