我使用其他代码将zip二进制文件转换为base64 txt文件。现在,我想使用以下代码将base64 txt文件转换回zip文件。但是生成的zip文件显示错误。我该如何解决
proc b64en str {
set bits $str
set tail {}
return [string map {
A 000000 B 000001 C 000010 D 000011 E 000100 F 000101
G 000110 H 000111 I 001000 J 001001 K 001010 L 001011
M 001100 N 001101 O 001110 P 001111 Q 010000 R 010001
S 010010 T 010011 U 010100 V 010101 W 010110 X 010111
Y 011000 Z 011001 a 011010 b 011011 c 011100 d 011101
e 011110 f 011111 g 100000 h 100001 i 100010 j 100011
k 100100 l 100101 m 100110 n 100111 o 101000 p 101001
q 101010 r 101011 s 101100 t 101101 u 101110 v 101111
w 110000 x 110001 y 110010 z 110011 0 110100 1 110101
2 110110 3 110111 4 111000 5 111001 6 111010 7 111011
8 111100 9 111101 + 111110 / 111111
} $bits]$tail
}
proc callme {file1 file2} {
set file1 [open $file1 r]
set file2 [open $file2 w+]
fconfigure $file2 -translation binary
fconfigure $file1 -buffering line
while {[gets $file1 data]>=0} {
set var $data
set nvar [string trimright $var = ]
set nvar [string trimright $nvar = ]
set var2 [b64en $nvar]
set var3 [binary format B* $var2]
puts $file2 $var3
}
close $file1
close $file2
}
set fp1 [lindex $argv 0]
set fp2 [lindex $argv 1]
callme $fp1 $fp2
以上代码适用于txt到txt文件 请帮我。 谢谢 when in open resultant zip file it display this error
答案 0 :(得分:0)
在编写二进制数据时,我认为您需要指定-nonewline,否则二进制文件中将包含多余的换行符,并且数据将被破坏。
puts -nonewline $file2 $var3