Tabela ASCII

Każdy drukowalny znak, który wpisujesz po angielsku, mapuje się na liczbę od 32 do 126 w siedmiobitowym standardzie ASCII. Poniżej 32 i pod 127 znajdują się kody sterujące, LF, CR, ESC, DEL i reszta, które nadal mają znaczenie przy debugowaniu protokołu szeregowego albo naprawianiu zakończeń linii. Ta tabela referencyjna podaje każdy punkt kodowy od 0 do 127 wraz z formą dziesiętną, hex, ósemkową, binarną i encją HTML.

Jak korzystać z tabeli ASCII

  1. 1

    Znajdź wiersz potrzebnego znaku

    Szukaj po literze, symbolu albo nazwie punktu kodowego. Kody sterujące są wymienione według trzyliterowego mnemonika.

  2. 2

    Czytaj w poprzek dla potrzebnego kodowania

    Dziesiętnie dla czytelnego kodu, szesnastkowo dla kodu źródłowego, binarnie do pracy z protokołami, encja HTML do znaczników.

  3. 3

    Skopiuj dowolną komórkę

    Przydatne, gdy dostajesz hex dump albo sekwencję bajtów i musisz wiedzieć, co to znaczy jako tekst.

Trzy zakresy ASCII

Zakres Dziesiętnie Zawartość
Sterujące 0-31, 127 NUL, BEL, BS, HT, LF, VT, FF, CR, ESC, DEL, inne
Drukowalne 32-126 Spacja, interpunkcja, cyfry, A-Z, a-z
Rozszerzone (poza ASCII) 128+ Zależy od kodowania; ASCII ściśle kończy się na 127

Kody sterujące, które nadal mają znaczenie

  • 0x00 NUL, terminator łańcuchów w C, wypełnienie w niektórych formatach binarnych.
  • 0x07 BEL, uruchamia dzwonek terminala.
  • 0x08 BS, backspace.
  • 0x09 HT, tabulator poziomy.
  • 0x0A LF, wysuw wiersza, uniksowy znak nowej linii.
  • 0x0D CR, powrót karetki; w Windows łączy się z LF jako CRLF.
  • 0x1B ESC, rozpoczyna sekwencje ucieczki ANSI dla kolorów terminala.
  • 0x7F DEL, pierwotnie kod do wybicia dziury w taśmie; dziś rzadko używany.

ASCII kontra Unicode

Unicode zachowuje znaczenie pierwszych 128 punktów kodowych zgodnie z ASCII. UTF-8 zapisuje te wartości jako te same pojedyncze bajty, dlatego plik UTF-8 zawierający wyłącznie znaki ASCII jest bajt w bajt zgodny z reprezentacją ASCII. Nie każde kodowanie znaków używa jednak wartości bajtów ASCII; znanym kontrprzykładem jest EBCDIC.

Typowe konwersje

  • Dziesiętnie na szesnastkowo: 65 (dz.) = 0x41 = A
  • Szesnastkowo na binarnie: 0x41 = 0100 0001
  • Szesnastkowo na encję HTML: A albo A renderują się jako A

Najczęściej zadawane pytania

ASCII to kod 7-bitowy, który zostawiał ósmy bit bajtu wolny na parzystość albo rozszerzenia. Wartości 128-255 to domena wariantów “extended ASCII” (Latin-1, Windows-1252, MacRoman itd.), niekompatybilnych ze sobą, co jest jednym z powodów, dla których wygrał Unicode.

LF (0x0A) przesuwa o jedną linię w dół; CR (0x0D) cofa kursor do kolumny zero. W Uniksie nowa linia to samo LF; w klasycznym Macu było to samo CR; w Windows i nagłówkach HTTP jest to CR po którym następuje LF (CRLF). Niedopasowania to klasyczna przyczyna tekstu podwójnie odstępowanego albo zlanego między systemami.

Wielkie litery ASCII zajmują wartości 65-90, a małe 97-122, czyli są oddalone dokładnie o 0x20. Po wcześniejszym sprawdzeniu, że bajt jest literą ASCII, można ustawić, wyzerować lub przełączyć bit 0x20, aby zmienić wielkość litery. Ślepe użycie XOR 0x20 dla dowolnych bajtów jest niebezpieczne, bo zmienia również cyfry, interpunkcję i kody sterujące.

Tak: LF i CR w plikach tekstowych, HT i FF w kodzie źródłowym i terminalach, ESC w sekwencjach kolorów ANSI, BEL w dzwonkach i alertach terminala. NUL nadal kończy stringi C. Reszta to głównie dziedzictwo czasów dalekopisu.

Powiązane narzędzia