uuencode编码和解码

发表于:2007-07-01来源:作者:点击数: 标签:
uuencode是以前unix下常用编码方式应用于UUCP(unix to unix copy),通过串行通讯传 输二进制文件.base64属于 MI ME(多用途国际互联网 邮件扩展)编码,与uuencode不是同一个范畴的,MIME主要应用于邮件,Uuencode主要应用 在邮件和新闻组. uuencode的开头是: begi


uuencode是以前unix下常用编码方式应用于UUCP(unix to unix copy),通过串行通讯传
输二进制文件.base64属于MIME(多用途国际互联网
邮件扩展)编码,与uuencode不是同一个范畴的,MIME主要应用于邮件,Uuencode主要应用
在邮件和新闻组.
uuencode的开头是:
begin <模式> <文件名>
<数据>
end
编码算法为不断地用3个字节数据列成一组(不足3个字节以零补齐)然后 此24位数据分
为4组,每组6位,再将得到的6位二进制数映射到ASCII码32~95之间的字符,而每行以M 开头(表示32+45),60个字符一行(包括”M”),最后一行以32+N 的ASCII字符开头,N 为最后一行编码的输入字节数.编码以一个只含一个空格的一行和只含”end”的一行结束.
从前一部分看和base64没有什么区别(关于base64的编码和解码请参见http://www.csdn.net/develop/read_article.asp?id=8843),都是将3个字符换成4个字符,不同的是base64由自己的base64码表,而uuencode是直接使用ascii码做码表.

eg.
begin .....
M1&%T93H(“@#@(“@#@(#0O-2@#\Y-2@#Y.C,S.C$P($%-#0I&<FJM.B@#@(“@#@(“@#@
M2&5N<GDL($@N62X@5VJN9PT*4W5B:F5C=#H@(“@#@($%B;W5T($U)344@96YC
M;VIE=VIE8V1E8VJD92!P<FJG<F%M#0I4;SH @(“@#@(“@#@(“@#@0VAA<FQE<R!-80T*
M;W(@8F%S938T(‘1R86YS9F5R(&9O<FUA=”P-“B@# @(“@#@(“@#@(“@#@(“UO(#QF


名称:uuencode


使用权限:所有使用者


使用方式:uuencode [-hv] [sourcefile] targetfile


说明:

早期在许多 unix 系统的传送协定只能传送七位元字元,并不支援二进位档案,像中文文字档就有用到八位元,所以无法完整地送到另一架机器上。 uuencode 指令,可以将二进位档转换成七位元的档案,传送到另一架机器上再以 uudecode 还原。最常见的是用在以电子邮件传送二进位档。uuencode 编码后的资料都以 begin 开始,以 end 作为结束。



begin 644 decode.dat
(内容编码)
`
end



begin 后的 644 是 unix 档案的调用权限代码。而 decode.dat 则是还原后的档名。


参数:
h 列出指令使用格式 (help)
v 列出版本讯息 (version)


范例:


将 source.dat 编码后存成 file.uud 档。由于 uuencode 会将编码后的资料在荧幕上列出,所以必须将资料导入 file.uud 中,而 target.dat 是 file.uud 还原后的档案名字,而不是编码后的档案。



uuencode source.dat target.dat > file.uud



执行指令后,由标准输入装置读入资料,简单地说是由键盘输入后在荧幕显示的资料,按 Crtl + d 键后就会被编码,输出至 file.uud 中。由于程序是以行为处理单位,若无法跳出程序,请多按几次 Ctrl + d 直到程序结束为止。



uuencode target.dat > file.uud



类似上一个指令,不过使用一个导入的技巧,将 source.dat 压缩后的资料传送给 uuencode 处理之后,存成 file.uud 档。 file.uud 档还原后就是 source.dat.Z 档。

compress -c source.dat | uuencode source.dat.Z > file.uud

显示版本讯息后,结束执行程序。

uuencode -v

原文转自:http://www.ltesting.net