/ASCII

Z Brain-wiki

TI:WTBD/ASCII

American Standard Code for Information Interchange

Kodowanie dla podstawowego alfabetu łacińskiego (+ cyfry i podstawowe znaki przestankowe), oparte na zasadzie 1 znak ↔ 1 bajt (8 bitów). Wystarczające dla zapisu tekstów w j. angielskim, ale chyba w żadnym innym. Inaczej: US-ASCII. W 1968 prezydent L. Johnson zarządził, że sprzęt kupowany przez rząd federalny musi wspierać kodowanie ASCII, co prawdopodobnie przypieczętowało sukces tego standardu :D

Ustaliło się dość dawno (lata 1960te) jako podstawowy standard kodowania tekstu w branży komputerowej. Istniały i nawet do tej pory pokutują standardy konkurencyjne, zupełnie odmienne (EBCDIC, ..?).

Podstawowe ASCII wykorzystuje jedyne bajty o najstarszym bicie wyzerowanym, i to nie wszystkie. Tablicę kodów mamy zwykle pod ręką (man ascii).

  • 0 .. 31: tzw. kody kontrolne, tradycyjnie stosowane do sterowania przepływem na terminalach, liniach szeregowych itp. Co ciekawsze:
    • 0 (NUL) nie ma prawa w zasadzie występować w strumieniu tekstowym (uwaga: UTF-16), w szczególności -- w nazwach plików (Posix), znacznik końca napisu (łańcucha znakowego) w języku C
    • 7 .. 13: [BEL, BS, HT, LF, VT, FF, CR] czyli ['\a', '\b', '\t', '\n', '\v', '\f', '\r'] p. TI:WTBD/KodySpecjalne
    • 27: ESC
  • 32 .. 47: znaki od spacji do '/'
  • 48 .. 57: cyfry dziesiętne
  • 58 .. 64: jeszcze trochę znaków
  • 65 .. 90: wielkie litery
  • 91 .. 96: jeszcze trochę znaków
  • 97 .. 122: małe litery
  • 123 .. 126: jeszcze kilka znaków
  • 127: kod DEL

Zbyt wiele logiki może w tym nie ma, ale jednak:

  • wszystkie cyfry stoją przed wszystkimi literami, i to w porządku numerycznym
  • wszystkie wielkie litery stoją przed wszystkimi małymi, w porządku alfabetycznym
  • wszystkie małe litery stoją w porządku alfabetycznym

i każda z tych grup zajmuje ciągły przedział wartości kodów. Wiele tradycyjnych narzędzi posługuje się sortowaniem "leksykograficznym" wg. wartości kodów ASCII, w oparciu o te własności. Co jest w sumie zadowalające, jeśli posługujemy się wyłącznie j. angielskim.

  • (kod małej litery) = (kod wielkiej litery) + 32; 32 to binarnie 100000; kody A .. Z to 1000001 .. 1011010; stąd mała litera różni się od wielkiej o ustawienie jednego bitu.

Prawidłowy zapis języków innych niż angielski wymaga co najmniej 8-bitowych rozszerzeń ASCII, lub Unicode.

ASCII Code Chart.svg