掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
文字変換 (ID:119990)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
使用可能な文字コードの範囲には、限りがありますよね。 なので、その範囲内でやり繰りする必要がある事を念頭に置いて下さい。 たとえば、A〜Zの範囲だけで考えてみると、文字コードは A→&H41, B→&H42, ……, Y→&H59, Z→&H5A のようになっていますよね。 これを、単純に +1 だけずらす(シフトさせる)という事は、 A→&H42, B→&H43, ……, Y→&H5A, Z→&H5B のようにするのではなく、 A→&H42, B→&H43, ……, Y→&H5A, Z→&H41 のように、最初と最後を繋げておく必要があるわけです。 もちろん、実際に使う文字は A〜Z よりも多いですし、 使われていないコード領域もありますから、それらを 考慮する必要がありますけれどね。 もう一つの案としては、元データの「1文字」を「別の1文字」に 置き換えるのではなく、「複数の文字」で表現するという手法があります。 たとえば AscW("あ") からは &H82A0 という値が返されますが、 これを "82A0" の4文字で表現すれば、(文字列長は増加しますが) 文字列を正しく暗号化/復元可能である事はわかりますよね。 ここでは、Hex関数を使って 16進数で表現しているため、1文字につき 4バイトが消費されてしまいますが、これを26進数にしたり、90進数に したりすれば、必要なデータ量はさらに圧縮できるというわけです。 たとえば、メールの配信などに利用される、『BASE64』という バイナリ→テキスト変換方式では、3バイト(24bit)のデータを 6bit単位で4つに区切る事で、あらゆるデータを4バイト単位の テキストに変換できるようになっています。 (6bitなら、0〜63の種類に収まるので、ASCIIの範囲で十分に表現可能)
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.