0

BASICで小さなマイクロコントローラーをプログラミングしています。基本的に、BASE64 でエンコードされたデータを受信したので、最後に BASIC を使用してデコードする必要があります。それを行う方法があるかどうか疑問に思っていましたか?

4

1 に答える 1

0

基本的なことはわかりませんが、次のリンクから始めることができます: http://en.wikipedia.org/wiki/Base64エンコーディングがどのように機能するかについての明確な説明があります。

base64 でエンコードされたメッセージをデコードする必要があるため、次のような配列をセットアップする必要があります

dim('A','B','C','D','E',....,'8','9','+','/')

(または基本的な構文が何であれ)64のインデックスを使用して、入力から4文字を読み取ります。ルックアップ テーブルで対応する値を見つけ、それを使用してメッセージをデコードします。

charという用語を使用して、エンコードされたメッセージで見つかった文字を示し、indexという用語を使用して、デコード アルゴリズムで文字が表す値に対処します。

基本的なサポート ビットマスクの場合は、非常に迅速に実行できます。そうでない場合は、巧妙な乗算/除算を使用する必要があります。

  • 最初のインデックスを乗算し、それを 4 (モジュラス 255) で乗算し、2 番目のインデックスを 16 で除算し、2 つの結果を加算して最初のバイトを取得します。

  • 2 番目のインデックスを 16 倍し (モジュラス 255)、3 番目のインデックスを 4 で割り、2 つの結果を加算して 2 番目のバイトを取得します。

  • 3 番目のインデックスを 16 倍し (モジュラス 255)、4 番目のインデックスを加算して 3 番目のバイトを取得します。

メッセージの最後まで繰り返します。

パディング文字に注意する必要があります: = 記号に遭遇した場合は、エンコードされたバイトの終わりに達したことがわかり、次のことを認識してデコードを停止する必要があります。

  • 3 番目にエンコードされた文字が = の場合、最初のバイトのみをデコードする必要があります。
  • 4 番目の文字が = の場合、2 バイトをデコードする必要があります。

他のケースはありません。

もう 1 つのヒント: エンコードされたメッセージがラップされることがあります。\n 文字 (または \r\n の任意の組み合わせ) を無視する必要があります。

于 2010-09-24T16:37:57.860 に答える