1

Base64 文字列を取り、それを基本的な Perl を使用してバイナリに変換することは可能ですか (つまり、標準リリースのパッケージのみで、CPAN のサードパーティ ライブラリは使用しません)。もしそうなら、どのように?

モジュール MIME::Base64 に出会いました。これは、プレーン テキストから Base64 および Base64-> プレーン テキストに変換されるように見えますが、Base64 からバイナリに変換するものを見つけることができないようです。

- - -編集 - - -

私のバイナリの概念が混乱している可能性があります。本質的に。HTML フォーム フィールドを介して渡された Base64 文字列があります。そのファイルをユーザーのブラウザにダウンロードするために、その文字列を必要な形式に変換したいと思います。

私が理解していることから。最初に正しい MIME タイプのヘッダーを印刷してから、動作するはずの生ファイル データを印刷するとします。

4

1 に答える 1

4

あなたはそれを逆に持っています。MIME::Base64は、エンコーディングと同様に、バイトのみを処理します。テキストをデコードした場合は、最初にエンコードする必要があります。

これは、任意のバイトを処理する能力を示しています。

use MIME::Base64 qw( decode_base64 encode_base64 );
my $expected = join '', map chr, 0x00..0xFF;
my $base64 = encode_base64($expected);
print($base64);
my $got = decode_base64($base64);
print($got eq $expected ? "ok" : "error", "\n");

AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4
OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3Bx
cnN0dXZ3eHl6e3x9fn+AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmq
q6ytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t/g4eLj
5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+/w==
ok

これは、最初にバイトにエンコードされていないテキストを処理できないことを示しています。

use MIME::Base64 qw( encode_base64 );
encode_base64("\x{2660}");
print("ok\n");

Wide character in subroutine entry at a.pl line 2.
于 2013-10-29T17:19:45.687 に答える