Pobierz prezentację
OpublikowałUrszula Witkiewicz Został zmieniony 10 lat temu
1
Architektura systemów komputerowych (jesień 2013)
Wykład 4 Reprezentacja danych część 4 dr inż. Wojciech Bieniecki Instytut Matematyki i Informatyki
2
Kolejność bajtów w słowach
W sytuacjach, kiedy liczby, znaki lub inne dane zapisywane są przy użyciu wielu bajtów, nie istnieje jeden unikatowy sposób uporządkowania tych bajtów w pamięci. Musi być użyta jedna z wielu konwencji ustalająca kolejność bajtów (byte order lub endianness). Analogia do zapisu pozycyjnego liczb lub kierunku pisma w różnych językach – ze strony lewej na prawą albo z prawej na lewo. Ciekawostka: Użyte poniżej nazwy big endian i little endian pochodzą z książki Jonathana Swifta Podróże Guliwera i odnoszą się do mieszkańców Liliputu, których spór o to, czy ugotowane jajko należy tłuc od grubego (tępego), czy od cienkiego (ostrego) końca, doprowadził do podziału na dwa stronnictwa toczące ze sobą niekończące się, choć bezsensowne dysputy i wojny.
3
Kolejność bajtów w słowach
Little endian (spotykane także cienkokońcowość) to forma zapisu danych, w której mniej znaczący bajt (zwany też dolnym bajtem, low-order byte, LSB) umieszczony jest jako pierwszy. Procesor zapisujący 32-bitowe wartości w pamięci, przykładowo 4A 3B 2C 1D pod adresem 100, umieszcza dane zajmując adresy od 100 do 103 w następującej kolejności: 100 101 102 103 ... 1D 2C 3B 4A Procesory, które używają formy little endian, to między innymi wszystkie z rodziny x86, DEC VAX
4
Kolejność bajtów w słowach
Big endian (spotykane także grubokońcowość) to forma zapisu danych, w której najbardziej znaczący bajt (zwany też grubym bajtem, z ang. high-order byte) umieszczony jest jako pierwszy. Procesor zapisujący 32-bitowe wartości w pamięci, przykładowo 4A 3B 2C 1D pod adresem 100, umieszcza dane, zajmując adresy od 100 do 103 w następującej kolejności: 100 101 102 103 ... 4A 3B 2C 1D Procesory, które używają formy big endian, to między innymi SPARC, Motorola 68000, PowerPC 970, IBM System/360, Siemens SIMATIC S7. Istnieją także procesory, w których można przełączyć tryb kolejności bajtów, należą do nich na przykład PowerPC (do serii PowerPC G4), SPARC, ARM, MIPS
5
Kolejność bajtów w słowach - odwracanie
X = aaaaaaaa bbbbbbbb cccccccc dddddddd m1= m2= m3= m4= W1 = (X & m1)>>24 = aaaaaaaa W2 = (X & m2)>>8 = bbbbbbbb W3 = (X & m3)<<8 = cccccccc W4 = (X & m3)<<24 = dddddddd int reverseEndian(int x) { return (x&0xff000000)>>24 | (x&0x00ff0000)>> 8 | (x&0x0000ff00)<< 8 | (x&0x000000ff)<<24; }
6
Kod ASCII ASCII (American Standard Code for Information Interchange)
Opracowany dla urządzeń dalekopisowych, później przyjęty dla komputerów 7-bitowy kod przyporządkowujący liczby z zakresu literom (alfabetu angielskiego), cyfrom, znakom przestankowym i innym symbolom oraz poleceniom sterującym litery, cyfry oraz inne znaki drukowane tworzą zbiór znaków ASCII - jest to 95 znaków o kodach pozostałe 33 kody (0-31 i 127) to tzw. kody sterujące służące do sterowania urządzeniem odbierającym komunikat, np. drukarką czy terminalem
7
Kody ASCII
8
Tablica bitowa kodów ASCII
9
Kod ASCII – znaki sterujące
33 kody – 0-31 i 127 znaki niedrukowalne: sygnały dźwiękowe, białe znaki (tabulacja, spacja, znak końca wiersza, powrót na początek wiersza) Kod dziesiętny Znak Opisy znaków sterujących NUL Zero :) 1 SQH (Start Of Heading) - początek nagłówka = SOM 2 STX (Start Of Text) - początek tekstu = EOA 3 ETX (End Of Text) - koniec tekstu = EOM 4 EOT (End Of Transmission) - koniec transmisji 5 ENQ (Enquiry) - wywołanie stacji 6 ACK (Acknowledge) - potwierdzenie 7 BEL (Bell) - dzwonek 8 BS (Back Space) - powrót o 1 pozycję 9 HT (Horizontal Tab) - tabulacja pozioma 10 LF (Line Feed) - przesuw o 1 wiersz 11 VT (Vertical Tab) - tabulacja pionowa 12 FF (Form Feed) - przesuw o 1 stronę 13 CR (Carriage Return) - powrót karetki 14 SO (Switch Output) - wyjście (przełączenie trwałe) 15 SI (Switch Input) wejście(przełączenie powrotne) 16 DLE (Data Link Escape) - pominięcie znaków sterujących 17 DC1 (Device Control 1) - sterowanie urządzenia 1 / start transmisji = XON Kod dziesiętny Znak Opisy znaków sterujących 18 DC2 (Device Control 2) - sterowanie urządzenia 2 19 DC3 (Device Control 3) - sterowanie urządzenia 3 / stop transmisji = XOFF 20 DC4 (Device Control 4) - sterowanie urządzenia 4 21 NAK (Negative Acknowledge) - potwierdzenie negatywne (gdy wystąpił błąd) 22 SYN (Sync) - synchronizacja 23 ETB (End Transmission Blok) - koniec bloku 24 CAN (Cancel) - anulowanie 25 EM (End of Medium) - koniec nośnika (zapisu) 26 SUB (Substitute) - zastąpienie 27 ESC (Escape) - przełączenie 28 FS (File Separator) - poprzedza dane alfanumeryczne 29 GS (Group Separator) - poprzedza dane binarne 30 RS (Record Separator) - separator rekordów 31 US (Unit Separator) - separator pozycji 32 SP (Space) - spacja (odstęp) 127 DEL Znak usunięcia znaku
10
Kod ASCII – zakończenie wiersza
W systemie DOS/ Windows każdy wiersz pliku zakończony jest parą znaków: CR, kod ASCII - 13(10) = 0D(16) - powrót na początek wiersza LF, kod ASCII - 10(10) = 0A(16) - przesunięcie o wiersz w systemie Linux znakiem końca wiersza jest tylko: LF, kod ASCII - 10(10) = 0A(16) podczas przesyłania pliku tekstowego z systemu Linux do systemu DOS/Windows pojedynczy znak LF zamieniany jest automatycznie na parę znaków CR i LF błędne przesłanie pliku tekstowego (w trybie binarnym) powoduje nieprawidłowe jego wyświetlanie
11
Kod ASCII – znak końca wiersza
DOS / Windows (32B): UNIX / Linux (30B): Mac OS (30B):
12
Podstawowe funkcje znakowe
isdigit – czy znak jest cyfrą? isalnum – czy znak jest literą? isspace – czy znak jest odstępem? ispunct – czy znak jest znakiem przestankowym? isprint – czy znak jest znakiem drukowanym isgraph – czy znak jest symbolem graficznym? toupper – zamiana małych liter na duże tolower – zamiana dużych liter na małe
13
isdigit int isdigit(char c) { return (c>=48 && c<=58); }
14
isalnum int isupper(char c) { return (c>='A' && c<='Z'); }
int islower(char c) { return (c>='a' && c<='z') } int isalpha(char c) { return ((c>='A' && c<='Z') || (c>='a' && c<='z')); }
15
toupper, tolower char toupper(char c) {
if ( (c >= 'a') && (c <= 'z') ) c = c - ('a' - 'A'); return c; } char tolower(char c) { if ( (c >= 'A') && (c <= 'Z') ) c = c + ('a' - 'A'); return c; }
16
Rozszerzony od ASCII Kod ASCII w wersji podstawowej jest 7-bitowy
Większość komputerów pracuje na 8-bitowych bajtach Dodatkowy bit jest wykorzystywany do powiększenia zbioru kodowanych znaków Powstało wiele ro żnych rozszerzeń ASCII wykorzystują cych o smy bit, nazywanych stronami kodowymi (np. norma ISO 8859, rozszerzenia firm IBM lub Microsoft)
17
Kod ASCII – strony kodowe
Strony kodowe – wersje kodu ASCII różniące się interpretacją symboli o numerach od 128 do 255. RÓżne strony kodowe mogą przyjąć odmienne znaki dla tego samego kodu Różne strony kodowe mogą różnić się wyborem znaków Duża liczba dostępnych stron kodowych wynika z faktu, że na 8 bitach można zakodować tylko 256 rożnych znaków, co jest niewystarczające do zmieszczenia w jednym zestawie znaków wszystkich alfabetów Przykłady stron kodowych uwzględniające polskie litery: ISO (Latin-2), ISO (Latin-10)
18
ISO 8859 Zestaw standardów służących do kodowania znaków za pomocą 8 bitów Standardy te zostały utworzone przez European Computer Manufactures’ Association (ECMA) w połowie lat osiemdziesiątych, a następnie uznane przez ISO Wszystkie zestawy ISO 8859 mają znaki takie same jak ASCII Pozycjom przypisane są dodatkowe kody sterujące, tzw. C1 (faktycznie są nieużywane).
19
Standardy ISO 8859 ISO (Latin-1) - alfabet łaciński dla Europy zachodniej ISO (Latin-2) – alfabet łaciński dla Europy środkowej i wschodniej, również odpowiednia Polska Norma ISO (Latin-3) – alfabet łaciński dla Europy południowej ISO (Latin-4) – alfabet łaciński dla Europy północnej ISO (Cyrlic) – alfabet dla cyrylicy ISO (Arabic) - dla alfabetu arabskiego ISO (Greek) - dla alfabetu greckiego ISO (Hebrew) - dla alfabetu hebrajskiego ISO (Latin-5) ISO (Latin-6) ISO (Thai) - dla alfabetu tajskiego ISO (Latin-7) ISO (Latin-8) ISO (Latin-9) - z ISO usunięto kilka rzadko używanych znaków i wprowadzono znak Euro oraz litery Š, š , Ž, ž, OE , oe oraz Ÿ ISO (Latin-10) – alfabet łaciński dla Europy środkowej - zmodyfikowany ISO ze znakiem Euro i dodatkowymi literami dla kilku języków.
20
Kod ISO kodowanie używane w Amerykach, Europie Zachodniej, Oceanii i większej części Afryki dostępne języki: albański, angielski, baskijski, duński, estoński, fiński, francuski, hiszpański, irlandzki, islandzki, kataloński, łaciński, niderlandzki, niemiecki, norweski, portugalski, retoromański, szkocki, szwedzki, włoski składa się ze 191 znaków łacińskiego pisma po rozszerzeniu o dodatkowe przypisania znaków jest podstawą dla dwóch mapowań znaków ISO i Windows-1252
21
Kod ISO dostępne języki: bośniacki, chorwacki, czeski, węgierski, polski, rumuński, serbski, słowacki, słoweński, górno- i dolnołużycki możliwość przedstawienia znaków w języku niemieckim i angielskim składa się ze 191 znaków łacińskiego pisma zapisywanych na 8-bitach kody z przedziałów 00(16)-1F(16) oraz 7F(16)-9F(16) nie są używane w ISO kodowanie to jest zgodne z Polską Normą
22
ISO i – porównanie
23
Windows 1250 Standard kodowania używana przez system Microsoft Windows do reprezentacji tekstów w językach środkowoeuropejskich używających alfabetu łacińskiego, takich jak albański, chorwacki, czeski, polski, rumuński, słowacki, węgierski jest podobny do ISO – posiada wszystkie jego drukowalne znaki (a także kilka dodatkowych), lecz kilka z nich zajmuje inne miejsca
24
Windows 1250 i ISO 8859-2 NZ - znak niezdefiniowany w kodowaniu
Hex CP 1250 ISO 8859-2 0xC0 Ŕ 0xE0 ŕ 0xC1 Á 0xE1 á 0xC2 Â 0xE2 â 0xC3 Ă 0xE3 ă 0xC4 Ä 0xE4 ä 0xC5 Ĺ 0xE5 ĺ 0xC6 Ć 0xE6 ć 0xC7 Ç 0xE7 ç 0xC8 Č 0xE8 č 0xC9 É 0xE9 é 0xCA Ę 0xEA ę 0xCB Ë 0xEB ë 0xCC Ě 0xEC ě 0xCD Í 0xED í 0xCE Î 0xEE î 0xCF Ď 0xEF ď 0xD0 Đ 0xF0 đ 0xD1 Ń 0xF1 ń 0xD2 Ň 0xF2 ň 0xD3 Ó 0xF3 ó 0xD4 Ô 0xF4 ô 0xD5 Ő 0xF5 ő 0xD6 Ö 0xF6 ö 0xD7 × 0xF7 ÷ 0xD8 Ř 0xF8 ř 0xD9 Ů 0xF9 ů 0xDA Ú 0xFA ú 0xDB Ű 0xFB ű 0xDC Ü 0xFC ü 0xDD Ý 0xFD ý 0xDE Ţ 0xFE ţ 0xDF ß 0xFF ˙ Hex CP-1250 ISO 88592 0x80 € ZK 0x81 NZ 0x82 ‚ 0x83 0x84 „ 0x85 … 0x86 † 0x87 ‡ 0x88 0x89 ‰ 0x8A Š 0x8B ‹ 0x8C Ś 0x8D Ť 0x8E Ž 0x8F Ź Hex CP-1250 ISO 88592 0x90 NZ ZK 0x91 ‘ 0x92 ’ 0x93 “ 0x94 ” 0x95 • 0x96 – 0x97 0x98 0x99 ™ 0x9A š 0x9B › 0x9C ś 0x9D ť 0x9E ž 0x9F ź Hex CP-1250 ISO 8859-2 0xA0 0xA1 ˇ Ą 0xA2 ˘ 0xA3 Ł 0xA4 0xA5 Ľ 0xA6 Ś 0xA7 0xA8 0xA9 Š 0xAA Ş 0xAB « Ť 0xAC Ź 0xAD 0xAE Ž 0xAF Ż Hex CP-1250 ISO 8859-2 0xB0 0xB1 ą 0xB2 ˛ 0xB3 ł 0xB4 0xB5 ľ 0xB6 ś 0xB7 ˇ 0xB8 0xB9 š 0xBA ş 0xBB » ť 0xBC Ľ ź 0xBD ˝ 0xBE ž 0xBF ż NZ - znak niezdefiniowany w kodowaniu ZK znak kontrolny, Znak znak wspólny dla obydwu kodowań.
25
Kodowanie polskich znaków
Tekst przykładowy: Ą Ć Ę Ł Ń Ó Ś Ź Ż ą ć ę ł ń ó ś ź ż Tekst zapisany w standardzie ISO – Tekst zapisany w standardzie CP-1250 ISO wyświetlony w edytorze obsługującym CP-1250 ˇ Ć Ę Ł Ń Ó ¦ ¬ Ż ± ć ę ł ń ó ¶ Ľ ż CP-1250 wyświetlony w edytorze obsługującym ISO Ľ Ć Ę Ł Ń Ó Ż š ć ę ł ń ó ż
26
Standardy kodowania polskich znaków
W Polsce stosowanych było ok. 20 standardów kodowania polskich liter Próby wprowadzania standardu Mazovia - promowany przez społeczność informatyczną w Polsce (nie był pełną stroną kodową , ale określał sposób kodowania polskich liter) IBM-Latin-2 (CP-852) - stosowany w DOS, OS/2 i części systemu Windows CP-1250 (Windows-1250) – stosowany w MS Windows PL ISO-Latin-2 (ISO ) - stosowany w Internecie Standard ISO jest zgodny z Polską Normą PN-93 T-42118
27
Unicode Komputerowy zestaw znaków mający w zamierzeniu obejmować wszystkie pisma i inne znaki (symbole muzyczne, techniczne, wymowy) używane na świecie Unicode przypisuje unikalny numer każdemu znakowi, niezależnie od używanej platformy, programu czy języka Definiowany jest przez dwa standardy, w których znaki są identyczne: Unicode i ISO/IEC 10646 Standard Unicode zaimplementowany został w wielu nowych technologiach, np. XML, Java, Microsoft .NET Framework, nowe systemy operacyjne
28
Unicode Rozwijany jest przez konsorcjum, w skład którego wchodzą firmy komputerowe, producenci oprogramowania oraz grupy użytkowników - Strona polska: Pierwsza wersja: Unicode 1.0 (październik 1991) Ostatnia wersja: Unicode 6.1.0 (styczeń 2012)
29
Podstawowe właściwości Unicode
Jednoznaczność – każdemu znakowi zakodowanemu za pomocą Unicode odpowiada zawsze ta sama wartość liczbowa i odwrotnie. Uniwersalność – dostępne znaki obejmują wszystkie powszechnie używane języki i symbole. 16-bitowa reprezentacja – każdy znak reprezentowany jest w postaci 16-bitowej liczby, czyli można zakodować 216=65536 różnych znaków Efektywność – ułatwienie manipulowania tekstami, gdyż identyfikacja znaku nie zależy od sekwencji sterujących czy znaków następujących bądź poprzedzających
30
UTF-8 – kodowanie znaków Unicode
Unicode Transformation Format. Jest to przykład kodu bajtowego Mapowanie znaków Unikodu na ciągi bajtów: 0x00 do 0x7F - 0xxxxxxx 0x80 do 0x7FF xxxxx 10xxxxxx 0x800 do 0xFFFF xxxx 10xxxxxx 10xxxxxx 0x10000 do 0x1FFFFF xxx 10xxxxxx 10xxxxxx 10xxxxxx 0x do 0x3FFFFFF xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 0x do 0x7FFFFFFF x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx Dla pierwszych znaków z przedziału ASCII od 0 do 127 (czyli dla np j.ang) znak jest mapowany jako jeden bajt. Dla znaków powyżej (np. polskie znaki) jest mapowany jako dwa bajty (lub więcej).
31
UTF-8 - kodowanie oznacza to, że ten sam znak można zapisać na kilka sposobów. Przykładowo znak ASCII / (ukośnik) można zapisać jako: Standard UTF-8 przewiduje, że każdy program MUSI odrzucać wszystkie znaki zapisane sekwencjami dłuższymi niż minimalna.
32
UTF-8 Zalety Każdy tekst w ASCII jest tekstem w UTF-8.
Żaden znak spoza ASCII nie zawiera bajtu z ASCII. Zachowuje porządek sortowania UCS-4. Typowy tekst ISO-Latin-X rozrasta się w bardzo niewielkim stopniu po przekonwertowaniu do UTF-8. Nie zawiera bajtów 0xFF i 0xFE, więc łatwo można go odróżnić od tekstu UTF-16. Znaki o kodzie różnym od 0 nie zawierają bajtu 0, co pozwala stosować UTF-8 w ciągach zakończonych zerem. O każdym bajcie wiadomo, czy jest początkiem znaku, czy też leży w jego środku (co nie jest prawdą np. w kodowaniu EUC). Nie ma problemów z little endian i big endian. Jest domyślnym kodowaniem w XML (również w jego aplikacjach: XHTML, SVG, XSL, CML, MathML)
33
UTF-8 – Wady Znaki CJK (chiński-japoński-koreański) zajmują po 3 bajty zamiast 2 w kodowaniach narodowych. Znaki alfabetów niełacińskich zajmują po 2 bajty zamiast jednego w kodowaniach narodowych. UTF-8 nie używa przesunięć zasięgów, co stanowi dodatkowe utrudnienie dla implementacji UTF-8 Problemu tego można byłoby uniknąć, przy okazji skracając nieznacznie długość danych, jeśli wykorzystano by zasadę przesunięć typu: sekwencje 1-bajtowe kodują 0x80 różnych znaków - od 0x00 do 0x7F sekwencje 2-bajtowe kodują 0x800 różnych znaków - od 0x80 do 0x87F sekwencje 3-bajtowe kodują 0x10000 różnych znaków - od 0x880 do 0x1087F itd.
34
UTF-16 Sposób ten wymaga użycia szesnastobitowych słów
Dla znaków na pozycjach poniżej (przedział 0000-FFFF) używane jest jedno słowo, którego wartość odpowiada pozycji znaku w standardzie. Dla znaków z wyższych pozycji używa się dwóch słów. Pierwsze z nich należy do przedziału D800–DBFF, drugie: DC00-DFFF. Znak o kodzie szesnastkowym zostanie zamieniony na sekwencję D800 DC00 a znak o kodzie 10FFFD (górna granica unikodu) na DBFF DFFD. W standardzie Unicode pozycjom z przedziału D800–DFFF nie są przypisane żadne znaki, zatem każda sekwencja słów kodowych jest interpretowana jednoznacznie.
35
UTF-32 wymaga użycia trzydziestodwubitowych słów. Zestaw znaków jest też zdefiniowany w standardzie ISO jako UCS-4 Kody obejmują zakres od 0 do 0x7FFFFFFF. Kod znaku zawsze ma długość 4 bajtów i w zapisie big endian przedstawia po prostu numer znaku w tabeli Unikodu. ZALETA Stała długość kodu każdego znaku WADA Mała efektywność- zakodowane ciągi znaków są dwa do czterech razy dłuższe niż ciągi tych samych znaków zapisanych w innych kodowaniach. ZASTOSOWANIE tylko w RAM w celu ułatwienia obsługi i przetwarzania (np. obliczenie długości czy wycinanie ciągu znaków jest bardzo proste)
36
Kod EBCDIC (ang. Extended Binary Coded Decimal Interchange Code, czyli rozszerzony dziesiętny zakodowany dwójkowo kod wymiany) to ośmiobitowe kodowanie znaków używane głównie w systemach IBM. Pojedynczy znak zapisywany jest na 8 bitach podzielonych na dwie części. Pierwsze 4 bity, nazywane strefą, oznaczają grupę do jakiej dany znak należy, podczas gdy ostatnie 4 bity, zwane cyfrą, identyfikują konkretny znak. 1 2 3 4 5 6 7 8 9 A B C D E F 40 â ä à á ã å ç ñ [ . < ( + ! 50 & é ê ë è í î ï ì ß ] $ * ) ; ^ 60 - / Â Ä À Á Ã Å Ç Ñ , % _ > ? 70 ø É Ê Ë È Í Î Ï Ì ` : # @ ' = " 80 Ø a b c d e f g h i ð ý þ 90 j k l m n o p q r æ Æ A0 ~ s t u v w x y z Ð Ý Þ B0 | × C0 { G H I ô ö ò ó õ D0 } J K L M N O P Q R û ü ù ú ÿ E0 \ ÷ S T U V W X Y Z Ô Ö Ò Ó Õ F0 Û Ü Ù Ú
37
PDP-6, PDP-10/DECsystem-10, DECSYSTEM-20 Least significant bits
Kod Radix-50 Kod ten jest nazywany Rad-50 lub RAD50, zaprojektowany przez Digital Equipment Corporation dla komputerów DECsystem, PDP, i VAX. Kod ten ma pozwala zapisać 40 różnych znaków (ósemkowo 50), w tym spacja, 26 liter, znak dolara, kropka, cyfry w dwóch wariantach: 3 znaki na słowie 16 bitowym. 6 znaków wraz z flagą informacyjną na słowie 36 bitowym. PDP-6, PDP-10/DECsystem-10, DECSYSTEM-20 m. s. bits Least significant bits 000 001 010 011 100 101 110 111 space 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 . $ %
38
Least significant bits
Kod Radix-50 PDP-11, VAX m. s. bits Least significant bits 000 001 010 011 100 101 110 111 space 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 $ . % 1 2 3 4 5 6 7 8 9 Łańcuchy tekstowe są kodowane na kolejnych słowach. Pierwszy znak w obrębie słowa zajmuje najstarszą pozycję. Przykład: Zakodować napis ABCDEF używając PDP-11. Wartości znaków to 1,2,3,4,5,6. Będą one zakodowane jako słowa: (1* ) * = 1683 (4* ) * = 6606 Każdy łańcuch jest uzupełniany spacjami na końcu do wielokrotności trzech znaków.
39
Kod Radix-50 Istnieje wiele odmian kodowania Rad-50. Np. w systemie operacyjnym RT-11 wartość jest określona jako niezdefiniowana natomiast programy użytkowe przypisywały jej reprezentację * Użycie Rad-50 wymusiło konwencję zapisu nazw plików w systemie PDP-11. Nazwa pliku składa się z 6 znaków nazwy właściwej i trzech znaków rozszerzenia. Cały łańcuch można było zapisać na trzech słowach (kropki rozdzielającej nie trzeba pamiętać) Rad-50 był często stosowany w tablicach symboli dla różnych języków programowania dla PDP-11.
40
Kod Base64 Base64 służy do kodowania ciągu bajtów za pomocą ciągu znaków Przypisuje 64 wybranym znakom wartości od 0 do 63. Wart. Znak A 11 L 22 W 33 h 44 s 55 3 1 B 12 M 23 X 34 i 45 t 56 4 2 C 13 N 24 Y 35 j 46 u 57 5 D 14 O 25 Z 36 k 47 v 58 6 E 15 P 26 a 37 l 48 w 59 7 F 16 Q 27 b 38 m 49 x 60 8 G 17 R 28 c 39 n 50 y 61 9 H 18 S 29 d 40 o 51 z 62 + I 19 T 30 e 41 p 52 63 / J 20 U 31 f 42 q 53 10 K 21 V 32 g 43 r 54 pad = Ciąg bajtów poddawany kodowaniu dzielony jest na grupy po 3 bajty. Każdą taką grupę dzieli się następnie na 4 jednostki 6-bitowe. Istnieją więc dokładnie 64 możliwe wartości każdej takiej jednostki Jeśli rozmiar wejściowego ciągu bajtów nie jest wielokrotnością liczby 3, to stosowane jest dopełnianie
41
Kod Base64 Rodzaj kodowania transportowego Wykorzystywane m.in. do:
przesyłania załączników binarnych w poczcie elektronicznej, pamiętania ViewState w stronach WWW tworzonych przy użyciu technologii ASP.NET, kodowania haseł wysyłanych w protokole SMTP podczas uwierzytelniania metodami PLAIN i LOGIN. Przykład: Idealy sa jak gwiazdy - nie mozna ich osiagnac, ale mozna sie nimi kierowac. SWRlYWx5IHNhIGphayBnd2lhemR5IC0gbmllIG1vem5hIGljaCBvc2lhZ25hYywgYWxlIG1vem5hIHNpZSBuaW1pIGtpZXJvd2FjLg0K
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.