为什么 Perl MIME::Base64 模块在解码 Base64 编码的字符串时在原始数据中不存在 LF 字符时在它们之前插入 CR 字符?
输入:由以下十六进制字符串描述的二进制文件,
14 15 6A 48 E4 15 6A 32 E5 48 46 13 A5 E3 88 43 18 A6 84 E3 51 3A 8A 0A 1A 3E E6 84 A6 1A 16 E8 46 84 A1 2E A3 5E 84 8A 4E 1A 45 E1 35E 8E 54 44
这编码为 Base64 编码的字符串:
FBVqSOQVajLlSEYTpeOIQximhONROooKGj7mhKYaFuhGhKEuo16Eik4aNeE1HoSpjkZURA==
我的 Perl 解码脚本是
use MIME::Base64;
my $bin = decode_base64('FBVqSOQVajLlSEYTpeOIQximhONROooKGj7mhKYaFuhGhKEuo16Eik4aNeE1HoSpjkZURA==');
open FH, ">test.bin" or die $!;
print FH $bin;
close FH;
输出:生成的文件“test.bin”具有以下十六进制字符串表示,
14 15 6A 48 E4 15 6A 32 E5 48 46 13 A5 E3 88 43 18 A6 84 E3 51 3A 8A 0D 0A 1A 3E E6 84 A6 1A 16 E8 46 84 A1 2E A3 5E 84 8A 4E 1A 35 E1E 35 46 54 44
请注意以粗体显示的十六进制数字,突出显示在原始数据中不存在的“0A”之前插入的附加“0D”字符。
我在 Windows 7 上使用 Perl v5.14.2。