我一直在谷歌上搜索,但似乎无法弄清楚这个字符串是如何被解码的。
解码从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==
后面的等于=
符号是填充符,用于将编码字符串四舍五入为三个字符的倍数。它们对编码数据的含义没有影响,如果您愿意,可以删除它们。