我一直在搜索Google,但似乎无法弄清楚这个字符串是如何被解码的。
从base64解码为十进制字符
例如,
CS20UumGFaSm0QXZ54HADg => 9 45 180 82 233 134 21 164 166 209 5 217 231 129 192 14
我使用了很多在线转换器。如果可能的话,我希望在Perl中获得相同的结果。
我已经使用过MIME::Base64
,但我得到一个字符串而不是数字列表。
如何解码字符?
答案 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==
尾随等于=
符号是插入的填充,用于将编码的字符串舍入为三个字符的倍数。它们对编码数据的含义没有影响,如果您愿意,可以将它们删除。