UUencode

UUencode var det första populära programmet som gjorde det möjligt för binära filer (bilder eller program, dvs för B.) att konvertera så att det bara "utskrivbara ASCII-tecken" består av och problemfritt via e-post kan skickas där endast ASCII- tecken finns tillåten.

berättelse

UU står för rötterna i UNIX . UU i UUencode och -decode, liksom UU i UUcp, står för U NIX till U NIX kopieringsprotokoll . Det vill säga överföringen från en UNIX-dator till en annan UNIX-dator.

Principen liknar Base64- metoden som är vanlig i dag för e-postbilagor : tre byte i den binära filen (= 24 bitar) är uppdelade i fyra gånger 6 bitar och utskrivbara ASCII-tecken tilldelas 6-bitarsvärdena. De första versionerna av UUencode använde helt enkelt ASCII-tecknen med värdena 32 till 95.

Eftersom ASCII-tecknet med värdet 32 ​​är mellanslag och detta ofta inte överlever postutsändningen användes istället ASCII-tecknet med värdet 96 (" `").

Filformat

UUencode använder ett speciellt format för den kodade filen:

begin läge filnamn
längddata
längddata
...
längddata
`
end

Som läge skrivs filrättigheterna, som de är vanliga under Unix, som 3 eller 4-siffriga oktala nummer . Det filnamn är namnet på den ursprungliga filen , utan en katalog.

Varje datarad börjar med en 1 byte längdspecifikation, som anger hur många ursprungliga byte som har kodats i den här raden. Denna längdspecifikation är ett tal mellan 1 och 63 och är också uu-kodad, dvs som ett tecken från " !" till " _". Vanligtvis Mkodas 45 byte (dvs. värdet " ") med 60 tecken.

För att visa slutet på filen måste alltid en "tom rad" kodas, som bara innehåller längden byte 0 (kodad " `"). Slutligen finns det en rad med nyckelordet end.

Kodningsmetod

Tre byte källdata uuencodekodas i fyra byte av. Data finns i den uu-kodade filen i de nedre sex bitarna i byten, de övre bitarna ställs in av kodningen:

    unkodierter Bitstrom    ↔    kodierter Bitstrom
aaaaaaaa bbbbbbbb cccccccc  ↔  0kaaaaaa 0kaabbbb 0kbbbbcc 0kcccccc


För kodning är de nya grupperna på sex "00eeeeee" först XOR- länkade med 32 . Bit k ställs in om resultatet är ≤ 32.

uncodiert                      (XOR 32)                   (k setzen?)                        codiert
[0]     = [00000000]              →            [00100000]    -ja→               [01100000] =    [96]
[1,31]  = [00000001,00011111]     →   [00100001,00111111]   -nein→     [00100001,00111111] = [33,63]
[32,63] = [00100000,00111111]     →   [00000000,00011111]    -ja→      [01000000,01011111] = [64,95]

Med andra ord: för 0 är resultatet 96, för alla andra måste 32 läggas till.

Avkodningen av data fungerar i omvänd ordning, fyra byte uudecodekälldata avkodas till tre byte. Om bit k ställs in i källdata måste detta tas bort. Det resulterande värdet kommer sedan att vara 32 XOR- länkat.

codiert                      (k entfernen)                 (XOR 32)                        uncodiert
[96]    = [01100000]             -ja→            [00100000]   →                [00000000] =      [0]
[33,63] = [00100001,00111111]   -nein→  [00100001,00111111]   →       [00000001,00011111] =   [1,31]
[64,95] = [01000000,01011111]    -ja→   [00000000,00011111]   →       [00100000,00111111] =  [32,63]

Med andra ord: för 96 är resultatet 0, för alla andra måste 32 subtraheras.

    kodierter Bitstrom               ↔     unkodierter Bitstrom
0kaaaaaa 0kaabbbb 0kbbbbcc 0kcccccc  ↔  aaaaaaaa bbbbbbbb cccccccc

exempel

Ett textstycke ovanifrån fungerar som inmatning:

Geschichte
Das UU steht für die Wurzeln in UNIX. Das UU in UUencode und -decode steht
ebenso wie das UU bei UUcp für UNIX to UNIX copy protocol. Also die Übertragung
von einem UNIX-Computer zu einem anderen UNIX-Computer.

UUencoding gör det:

begin 644 uuencode-Test.txt
M1V5S8VAI8VAT90T*#0I$87,@554@<W1E:'0@9OQR(&1I92!7=7)Z96QN(&EN
M(%5.25@N($1A<R!552!I;B!5565N8V]D92!U;F0@+61E8V]D92!S=&5H="`-
M"F5B96YS;R!W:64@9&%S(%55(&)E:2!556-P(&;\<B!53DE8('1O(%5.25@@
M8V]P>2!P<F]T;V-O;"X@06QS;R!D:64@W&)E<G1R86=U;F<@#0IV;VX@96EN
M96T@54Y)6"U#;VUP=71E<B!Z=2!E:6YE;2!A;F1E<F5N(%5.25@M0V]M<'5T
%97(N#0H`
`
end

XXkod

XXencode fungerar på samma sätt som UUencode, men använder bara bokstäver och siffror och de två specialtecken plus (+) och minus (-). Detta för att minimera risken för att vissa tecken i textfilen skadas irreparabelt av automatiska teckenuppsättningsomvandlingar (t.ex. från ASCII till EBCDIC ) under överföringen.

Dessutom, med vissa xxencode-versioner finns det möjlighet att skicka en lista med alla tecken som används. Om listan också ändras på grund av felaktiga konverteringar av teckenuppsättningar kan mottagaren känna igen detta och fortfarande avkoda filen korrekt, så länge ändringarna är reversibla .

Kodningstabell för XXencode
värde karaktär värde karaktär värde karaktär värde karaktär
0 + 16 E 32 U 48 k
1 - 17: e F 33 V 49 l
2 0 18: e G 34 W 50 m
3 1 19: e H 35 X 51 n
4: e 2 20: e I 36 Y 52 o
5 3 21: a J 37 Z 53 p
6: e 4 22: a K 38 a 54 q
7: e 5 23 L 39 b 55 r
8: e 6 24 M 40 c 56 s
9 7 25: e N 41 d 57 t
10 8 26: e O 42 e 58 u
11 9 27 P 43 f 59 v
12: e A 28 Q 44 g 60 w
13: e B 29 R 45 h 61 x
14: e C 30: e S 46 i 62 y
15: e D 31 T 47 j 63 z

Relaterade ämnen

  • 7plus - effektivare och felsäker kodningsmetod som används i amatörradio
  • Kermit - protokoll som också mappar binära tecken till ASCII-tecken.
  • Base64 - MIME- kodning , används i e-post för att överföra binära filer.

webb-länkar