从base64解码为十进制字符代码

时间:2014-08-03 13:36:16

标签: perl base64

我一直在搜索Google,但似乎无法弄清楚这个字符串是如何被解码的。

从base64解码为十进制字符

例如,

CS20UumGFaSm0QXZ54HADg => 9 45 180 82 233 134 21 164 166 209 5 217 231 129 192 14

我使用了很多在线转换器。如果可能的话,我希望在Perl中获得相同的结果。

我已经使用过MIME::Base64,但我得到一个字符串而不是数字列表。

如何解码字符?

1 个答案:

答案 0 :(得分:0)

MIME::Base64的结果是一个字符串,而你有一个字符代码列表。

此程序使用split将已解码的字符串分隔为字符,并使用ord提取每个字符的字符代码。打印结果数组显示的值与您在问题中显示的列表相同

use strict;
use warnings;

use MIME::Base64;

my $str = 'CS20UumGFaSm0QXZ54HADg';

my @chars = split //, decode_base64 $str;
my @codes = map ord, @chars;
print "@codes\n";

<强>输出

9 45 180 82 233 134 21 164 166 209 5 217 231 129 192 14

要生成原始的64位编码字符串,您可以编写此

print encode_base64(join '', map chr, @codes), "\n";

<强>输出

CS20UumGFaSm0QXZ54HADg==

尾随等于=符号是插入的填充,用于将编码的字符串舍入为三个字符的倍数。它们对编码数据的含义没有影响,如果您愿意,可以将它们删除。