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



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

解码从base64到十进制字符

例如,

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

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

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

字符是如何被解码的?

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 "@codesn";

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==

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