2014-09-30 60 views
0

我有以下形式的二进制字符串Perl的转换的base64回二进制

"000000110111010100110110001010001010110111010110010001111111101010000001" # for example 

编码为基础64,我用包和encode_base64

my $base64 = encode_base64 pack 'B*', $binaryString; 

哪个我会再拿到。

A3U2KK3WR/qB 

我想恢复到字符串的原始二进制形式,我想

my $binString = decode_base64 $base64; 

但返回

u6(��G�� 

我怎样才能恢复原来的二进制字符串?

+0

看起来像你的问题需要一些拆包。 – 2014-09-30 19:59:04

+0

[现场演示](http://ideone.com/MyXIg5)的解压结果。 – Miller 2014-09-30 20:39:13

回答

3

my $base64 = encode_base64(pack('B*', $binary)); 

逆是

my $binary = unpack('B*', decode_base64($base64)); 
+3

注意:我认为length($ binary)总是可以被8整除。如果不是,$ base64'中没有足够的信息来重新创建原始字符串。 – ikegami 2014-09-30 20:00:44

+0

谢谢你,完美的作品,感觉漂亮的转储,我忘了解压缩 – 2014-09-30 20:06:19