繁体   English   中英

如何使用Perl将Base64字符串转换为二进制

[英]How can I convert a Base64 string to binary using Perl

是否可以使用Base64字符串并使用基本Perl将其转换为二进制(即只是标准版本中的软件包,CPAN没有第三方库)? 如果是这样,怎么样?

我遇到了模块MIME :: Base64,它似乎转换为纯文本 - > Base64和Base64->纯文本,但我似乎无法找到从Base64到二进制的任何内容。

- - -编辑 - - -

我的二元概念可能会被混淆。 实质上。 我有一个通过HTML表单字段传递的Base64字符串。 我想将该字符串转换为任何必要的格式,以便将该文件下载到用户的浏览器。

据我所知。 如果我首先打印正确的MIME类型标题,然后打印应该工作的原始文件数据。

你倒退了。 与编码一样, 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.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM