2000/12/18 [月]
uuencode とは、Unix で昔から用いられている、バイナリをテキストに変換するプログラムです。この変換結果となるファイルの作成には次のような手順を使用します。
uuencode ファイル作成方法
- 変換したいファイル名を filename、そのファイルの Unix のモードを 3 つの数字で表した値を mode とするとき、「begin mode filename」を出力します。
- 変換したい文字を最大 45 文字取ってきます。取得した文字数に(基本変換方法と同様に) 0x20 を加算しその値を出力します。もし文字数が 0 なら 0x60 を出力します。
- もし全ての文字が変換されたら(文字数が 0 なら)、「end」と改行を出力し、終了します。
- 取得文字数が 3 の倍数でない場合、その条件を満たすまで取得文字列の末尾に文字 0x00 を補います。
- 取得した文字を、基本変換方法で変換し、出力します。
- 改行を出力します。
- 2. から繰返します。
変換例
- ファイル名=kanji.txt, mode=644, kanji.txt のファイルの内容は、16 進数ダンプで「22 6F 57 5B」(漢字) とします。
- 「begin 644 kanji.txt\n」を出力します。
- 入力文字数=4 なので 0x24 つまり文字 '$' を出力します。
- 漢字 (0x22 0x6F 0x57 0x5B) → (3 の倍数にする)
0x22 0x6F 0x57 0x5B 0x00 0x00 → (ビット表記)
0010_0010 0110_1111 0101_0111 0101_1011 0000_0000 0000_0000 → (6 bit 毎に分解)
001000 100110 111101 010111 010110 110000 000000 000000→ (16 進数による表記)
0x08 0x26 0x3D 0x17 0x16 0x30 0x00 0x00 → (0x20 を加算。0x00 は 0x60 に)
0x28 0x46 0x5D 0x37 0x36 0x50 0x60 0x60→ (ASCII 文字表記)
(F]76P``
- 改行を出力します。つまりこの行では、「$(F]76P``\n」を出力します。
- 「`\n」を出力します。
- 「end\n」を出力します。
- 最終的に出力されたものは次のようになります。
begin 644 kanji.txt
$(F]76P``
`
end
by seclan