再掲した関数を使うと、負の数含む整数と一文字とで相互変換が可能になりました。
ただしそれが成立するのは -2^15 <= 整数 <= 2^15-1 の範囲に限ります。
整数が「16bit符号付き整数で表せる範囲」にあるならば成立。
言い換えれば、「16bit符号付き整数と一文字は相互変換可能」
for i% = -32778 to 32777
if i% != u2i(asc(chr$(i2u(i%)))) then ? "error at ";i%
next
-32768から32767の範囲で等号が成立します。
相互変換可能な範囲がずれただけで、その個数は相変わらず2^16個です。
たくさんの質問を頂きましたが、ややこしいところなのでゆっくり進みますね。その中で分からない事があれば、いつでも質問してください。
あと、変換関数再掲します。
def u2i(u16%) ' 符号なしから符号ありに変換
return ((u16%+32768) and 65535)-32768
end
def i2u(i16%) '符号ありから符号なしに変換
retrun i16% and 65535
end
符号ありの整数 k を文字列に入れる場合
a$[i] = chr$(i2u(k))
それを読む場合
k = u2i(asc(a$[i]))