2014-09-30 83 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