uuencode

Programy uuencode i jego symetryczny kod uudecode to programy do konwersji danych binarnych na tekst, dostępne w prawie wszystkich systemach Unix / Linux , pozwalają one na konwersję danych binarnych bez degradacji w celu ich transmisji przez medium, które normalnie nie byłoby. dopuszczać. Te dwa programy i implementowany przez nie algorytm zostały przeniesione na bardzo dużą liczbę systemów operacyjnych . Nazwa uuencode pochodzi od Uniksa do Unix Encoding .

Historia

Oba te programy zostały napisane przed masowym użyciem Internetu, w szczególności po to, aby pakiet oprogramowania uucp mógł niezawodnie transportować pliki binarne. Ten pakiet oprogramowania umożliwia komunikację między serwerami za pośrednictwem modemu i został pierwotnie zaprojektowany do wymiany prostego tekstu (przy użyciu tylko części ze 128 znaków ASCII ).

Były używane głównie do przesyłania wiadomości ( poczta elektroniczna i fora Usenet ), ale obecnie ich użycie jest w dużej mierze zastępowane przez rozszerzenia MIME, w szczególności przez kodowanie base64 (które wykorzystuje bardziej przenośny zestaw znaków w zakodowanym strumieniu).

Zasada działania

Program uuencode tworzy strumień tekstowy (ciąg znaków ASCII ), którego pierwsza linia to:

begin <mode> <nom>

gdzie <tryb> i <nazwa> są zastępowane odpowiednio wartością ósemkową reprezentującą prawa dostępu, które mają być umieszczone w dekodowanym pliku oraz nazwą pliku do zbudowania podczas dekodowania. Zakodowany strumień danych kończy się linią zawierającą tylko tekst:

end

Pomiędzy tymi dwoma wierszami można znaleźć tylko następujące 65 znaków:

es ! " # $  % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9  :  ; < = >  ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ `

postać zauważyć „ponownego powyżej postać ASCII, reprezentujące powierzchni i którego cyfrowy kod wynosi 32. Inne postacie są kody liczbowe od 1 do 32 + 32 + 64.

Program kodujący odczytuje oryginalny plik w grupach po trzy bajty (prawdopodobnie uzupełnione bajtami o wartości zerowej, jeśli liczba bajtów do zakodowania nie jest wielokrotnością 3), a następnie konwertuje te trzy bajty (tj. 24 bity ) na cztery grupy 6 bitów każdy, następnie do każdej grupy 6 bitów (która reprezentuje w bazie 10 liczbę od 0 do 63) jest dodawana wartość 32, otrzymana wartość to kod ASCII jednego z przedstawionych powyżej znaków, znak ten jest używany przez koder w strumieniu wyjściowym.

Program kodujący dodaje również, na samym początku każdego utworzonego wiersza tekstu, liczbę znaków / bajtów zakodowanych w tym wierszu; ta liczba (w zakresie od 1 do 45) jest sama kodowana przez zwiększenie jej o 32, zanim zostanie z kolei przekształcona w znak ASCII . Dopuszczalny limit wielkości tworzonych wierszy wynosi zatem 61 znaków (tj. 1 znak dla początkowej długości plus 60 znaków kodowania 45 bajtów )

Przykład

Ten przykład ilustruje sposób działania kodowania; jednakże, ponieważ zakodowane tutaj bajty reprezentują kody ASCII tekstu, w tym przypadku nie ma sensu używać uuencode . Tekst użyty jako przykład to „Och! ":

Tekst O godz !
Bajty do zakodowania (od 0 do 255 i podstawa 10) 79 104 33
Konwertowane na bity (podstawa 2) 0 1 0 0 1 1 1 1 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 1
Wartość dziesiętna każdej grupy 6 bitów (od 0 do 63) 19 54 32 33
+32 51 86 64 65
Znak wytwarzany przez kodowanie 3 V @ A

Kodowanie wytwarzające tutaj dokładnie cztery bajty (i 3 + 32 = 35, czyli kod ASCII znaku #), tekst wysłany przez koder to zatem:

#3V@A

Zobacz też

Powiązane artykuły

Bibliografia

Linki zewnętrzne