词条 | UUENCODE |
释义 | uuencode是将二进制文件转换为文本文件的过程,转换后的文件可以通过纯文本e-mail进行传输,在接收方对该文件进行uudecode,即将其转换为初始的二进制文件。 uu 编码 uuencode 编码方式用于将任意的二进制文件转换为文本文件,比如email.转换后的文件中仅包含可打印字符. uuencode 运算法则将连续的 3字节编码转换成 4字节(8-bit 到 6-bit)的可打印字符. 该编码的效率高于Hex 格式. 从二进制文件中读取 3字节的数据, 表示如下(a7 表示 a字节的第 7位): a7a6a5a4a3a2a1a0 b7b6b5b4b3b2b1b0 c7c6c5c4c3c2c1c0 转换它们到4字节里为如下所示: 0 0 a7a6a5a4a3a2 0 0 a1a0b7b6b5b4 0 0 b3b2b1b0c7c6 0 0 c5c4c3c2c1c0 然后, 每个字节再加 0x20转换为可打印的字符. 注意: 如果是一个 0字节那它应该被转换为0x60而不是0x20, 因为(前引用'`')优于 0x20(空格' '). 例如: 从文件中读取的 3字节如下: 14 0F A8 00010100 00001111 10101000 转换为 6-bit: 000101 000000 111110 101000 每字节高两位补 0后为: 00000101 00000000 00111110 00101000 最后每字节再加 0x20,则 4字节输出应该为: 25 60 5E 48 注意: 00字节被转换为 0x60而不是 0x20. 因此, 在一个 uuencoded文件中仅包含字符 0x21 '!'到 0x60 '`',它们都是可打印和可被 email传送的. 这个转换过程也意味着 uuencoded 文件要比原文件大 33%的. ===== 编码 ===== outbuf [4] 输出 uu编码数据. inbytep [3] 输入二进制数据. #define ENCODE_BYTE(b) (((b) == 0) ? 0x60 : ((b) + 0x20)) outbuf [0] = ENCODE_BYTE ((inbytep [0] & 0xFC) >> 2); outbuf [1] = ENCODE_BYTE (((inbytep [0] & 0x03) << 4) + ((inbytep [1] & 0xF0) >> 4)); outbuf [2] = ENCODE_BYTE (((inbytep [1] & 0x0F) << 2) + ((inbytep [2] & 0xC0) >> 6)); outbuf [3] = ENCODE_BYTE (inbytep [2] & 0x3F); ===== 解码 ===== linep [4] 输入 uu编码数据. outbyte [3] 输出二进制数据. #define DECODE_BYTE(b) ((b == 0x60) ? 0 : b - 0x20) outbyte [0] = DECODE_BYTE (linep [0]); outbyte [1] = DECODE_BYTE (linep [1]); outbyte [0] <<= 2; outbyte [0] |= (outbyte [1] >> 4) & 0x03; outbyte [1] <<= 4; outbyte [2] = DECODE_BYTE (linep [2]); outbyte [1] |= (outbyte [2] >> 2) & 0x0F; outbyte [2] <<= 6; outbyte [2] |= DECODE_BYTE (linep [3]) & 0x3F; |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。