W epoce cyfrowej, w której żyjemy, dane przepływają między urządzeniami w mgnieniu oka. Jednak, aby to było możliwe, muszą one być przedstawione w zrozumiały dla maszyn sposób. Tu na arenę wkracza tabela ASCII - standard kodowania znaków, który przez dekady służył jako most między ludzkim językiem a językiem komputerów. Choć dla wielu tabela ASCII może wydawać się reliktem przeszłości, jej zastosowanie w nowoczesnych technologiach, takich jak skanery kodów kreskowych, jest dowodem na jej nieustające znaczenie. W tym artykule przyjrzymy się, jak ta klasyczna metoda kodowania jest wykorzystywana w skanerach kodów kreskowych, urządzeniach, które codziennie przetwarzają miliardy transakcji na całym świecie. Zapraszamy do dalszej lektury!
W tym artykule omówimy:
- Kody z tabeli ASCII - co to takiego
- Krótka historia powstania kodów ASCII
- Rodzaje kodów ASCII
- Zastosowanie i wykorzystanie tabelii ASCII
- Co łączy skaner kodów kreskowych i tabelę znaków ASCII
Co to jest kod ASCII?
Komputery, sieci komputerowe oraz wszelkie urządzenia elektroniczne wyposażone w mikroprocesor, funkcjonują w oparciu o system binarny, czyli ciąg zer i jedynek. Zatem wszystkie przetwarzane informacje muszą mieć postać cyfr.
Aby urządzenia działające w oparciu o system binarny przetwarzały litery i znaki specjalne stworzono tabelę ASCII, zawierającą zestaw kodów służący do reprezentacji znaków alfanumerycznych, cyfr, symboli specjalnych oraz poleceń sterujących. ASCII ( skrót od ang. American Standard Code for Information Interchange), to siedmiobitowy system kodowania znaków, w którym każdy znak jest reprezentowany przez liczbę całkowitą z zakresu od 0 do 127.
Przykładowo:
- Znak 'A' jest reprezentowany przez liczbę 65
- Znak 'a' ma wartość 97
- Cyfra '0' ma wartość 48

Krótka historia powstania kodów ASCII
Standard kodowania ASCII powstał na bazie kodu telegraficznego, a pracę nad tym systemem zaczęto w roku 1960 podczas spotkania grupy X3.2 American National Standards Institute (ANSI). Pierwszą wersję udostępniono w roku 1963. Na przestrzeni lat 1967 - 1986 wprowadzono jego liczne aktualizacje.
W ASCII każdy znak reprezentowany jest przez liczbę całkowitą w 7-bitowym formacie. Z tych znaków, 95 to znaki, które można wydrukować, w tym litery małe i duże alfabetu łacińskiego, cyfry oraz różne symbole, takie jak znaki interpunkcyjne. Jego pierwotne przeznaczenie to współpraca z językiem angielskim, co wyjaśnia brak liter z akcentami czy innymi znakami diakrytycznymi. Wielu znaków sterujących, zaprojektowanych pierwotnie dla urządzeń jak dalekopisy, jest już dziś nieaktualnych.
Do grudnia 2007 roku ASCII był najbardziej rozpowszechnionym systemem kodowania znaków w sieci. Jednak zastąpiono go kodowaniem UTF-8, które ma tę zaletę, że jest kompatybilne wstecznie z ASCII.

Rodzaje kodów ASCII
Podstawowa tabela ASCII ma 128 znaków, ale z czasem pojawiło się wiele rozszerzeń tego standardu, które umożliwiły reprezentację większej liczby znaków. Poniżej przedstawiamy rodzaje kodów ASCII.
Rozszerzony ASCII
Obejmuje 256 znaków (od 0 do 255). Druga połowa tabeli (128-255) jest często wykorzystywana do reprezentacji znaków specjalnych oraz liter z alfabetów innych niż angielski, takich jak np. polskie "ę" czy "ą".
Unicode
Został stworzony, by pomóc w reprezentacji znaków z różnych języków i systemów pisma na świecie. Unicode może reprezentować ponad milion różnych znaków, co sprawia, że jest znacznie bardziej wszechstronny niż ASCII.

Zastosowanie i wykorzystanie tabelii ASCII
System kodowania znaków ASCII jest szeroko wykorzystywany. Poniżej przedstawiamy kilka innych zastosowań, w których możemy spotkać się z tym systemem.
- Komunikacja między urządzeniami: ASCII jest standardem w komunikacji między różnymi urządzeniami, takimi jak komputery, drukarki czy skanery.
- Programowanie: Kody ASCII są często używane w programowaniu do reprezentacji stringów oraz do kontroli strumieni danych.
- Reprezentacja danych: W wielu systemach plików tekstowych, zawartość jest przechowywana w formacie ASCII, co umożliwia łatwe odczytywanie i edycję takich plików.
- Kryptografia: ASCII jest również używany w kryptografii do reprezentacji tekstów jawnych przed ich zaszyfrowaniem.
Czy wiesz, że...
- ASCII miało kluczowe znaczenie w pierwszych misjach kosmicznych. Apollo Guidance Computer, który był używany w programie Apollo, korzystał z wariantu kodowania ASCII do komunikacji z astronautami.
- Emotikon ":)" pochodzi z poczatków internetu i został stworzony właśnie przy użyciu znaków z tabeli ASCII.
- W latach 70. i 80. XX wieku, kiedy grafika komputerowa była jeszcze w powijakach, artystyczne przedstawienia stworzone przy użyciu tylko znaków ASCII były popularne. Te dzieła nazywano "ASCII art".
- Znak o wartości 0 w ASCII to tzw. NULL, który pierwotnie był używany jako znak wypełniający w komunikacji dalekopisowej.
- Wiele standardów kodów kreskowych korzysta z tabeli ASCII do reprezentacji danych, co umożliwia łatwą integrację z systemami komputerowymi.
Co łączy skaner kodów kreskowych i tabelę znaków ASCII?
Czytnik kodów kreskowych został stworzony do skanowania kodów kreskowych 1D lub kodów 2D QR. Za jego pomocą w szybki i łatwy sposób, zysujemy możliwość rozszyfrowania informacji zawartych w białych i czarnych poziomych liniach czy w graficznej mozaice kodu QR.
Te niewielkie urządzenia znacząco ułatwiają oraz przyspieszają pracę kasjerów podczas obsługi klientów. Za ich pomocą możliwe jest przesłanie informacji do komputera czy kasy fiskalnej na temat nazwy skanowanego produktu oraz jego ceny.
Rozwój gospodarczy i technologiczny sprawił, że skanery kodów kreskowych zaczęto wykorzystywać nie tylko w handlu. Znajdziemy je również w magazynach, na halach produkcyjnych, w bibliotekach, aptekach, a nawet biurach. Czytniki kodów kreskowych mogą wspołpracować nie tylko z kasą fiskalną, wykorzystuje się je również w programach księgowo-magazynowych, jak Subiekt czy Comarch Optima. Jednak, aby działanie czytnika z tego typu programami było poprawne, często potrzebne jest ustawienie określonego znaku jako, tak zwany prefiks lub sufiks.
Prefiks co to?
W kontekście skanerów kodów kreskowych termin prefiks odnosi się do serii znaków, które są automatycznie dodawane na początku odczytanego kodu kreskowego. Innymi słowy, kiedy skaner odczytuje kod kreskowy, nie przesyła jedynie danych bezpośrednio zeskanowanego kodu, ale może również dołączyć dodatkowy, wcześniej zdefiniowany ciąg znaków poprzedzający odczytane dane.
Czym jest sufiks
Sufiks odnosi się do serii znaków, które są automatycznie dodawane na koniec danych odczytanych z kodu kreskowego. Kiedy skaner odczytuje kod kreskowy, poza samymi danymi pochodzącymi bezpośrednio z kodu, może również dodawać zdefiniowany wcześniej ciąg znaków na końcu tych danych.
Prefiks i sufiks może stanowić zarówno liczba, litera, znak specjalny, a nawet klawisze funkcyjne. Do ustawienia odpowiedniego znaku używa się właśnie tabeli z kodami ASCII.
Poniżej prezentujemy pełną tabelę ASCII zawierającą znaki systemu binarnego, dziesiętnego oraz szesnastkowego
| Binarny | Decymalny (Dziesiętny) | Heksadecymalny (Szesnastkowy) | Znak | Skrót |
|---|---|---|---|---|
| 0000 0000 | 0 | 00 | Null (Zero) | NUL |
| 0000 0001 | 1 | 01 | Początek nagłówka | SOH |
| 0000 0010 | 2 | 02 | Początek tekstu | STX |
| 0000 0011 | 3 | 03 | Koniec tekstu | ETX |
| 0000 0100 | 4 | 04 | Koniec transmisji | EOT |
| 0000 0101 | 5 | 05 | Zapytanie | ENQ |
| 0000 0110 | 6 | 06 | Potwierdzenie | ACK |
| 0000 0111 | 7 | 07 | Bell (Dzwonek) | BEL |
| 0000 1000 | 8 | 08 | Backspace (Cofnięcie) | BS |
| 0000 1001 | 9 | 09 | Tabulacja pozioma | HT |
| 0000 1010 | 10 | 0A | Przesunięcie o jeden wiersz | LF |
| 0000 1011 | 11 | 0B | Tabulacja pionowa | VT |
| 0000 1100 | 12 | 0C | Przesunięcie o jedną stronę | FF |
| 0000 1101 | 13 | 0D | Carriage Return - ENTER | CR |
| 0000 1110 | 14 | 0E | Shift Out (Wyjście) | SO |
| 0000 1111 | 15 | 0F | Shift In (wejście) | SI |
| 0001 0000 | 16 | 10 | Pominięcie znaków sterujących | DLE |
| 0001 0001 | 17 | 11 | Sterowanie urządzenia 1 | DC1 |
| 0001 0010 | 18 | 12 | Sterowanie urządzenia 2 | DC2 |
| 0001 0011 | 19 | 13 | Sterowanie urządzenia 3 | DC3 |
| 0001 0100 | 20 | 14 | Sterowanie urządzenia 4 | DC4 |
| 0001 0101 | 21 | 15 | Negative Acknowledge | NAK |
| 0001 0110 | 22 | 16 | Synchronizacja | SYN |
| 0001 0111 | 23 | 17 | Koniec bloku | ETB |
| 0001 1000 | 24 | 18 | Cancel (Anulowanie) | CAN |
| 0001 1001 | 25 | 19 | Koniec nosnika | EM |
| 0001 1010 | 26 | 1A | Zastąpienie | SUB |
| 0001 1011 | 27 | 1B | Escape | ESC |
| 0001 1100 | 28 | 1C | Poprzedza dane alfanumeryczne | FS |
| 0001 1101 | 29 | 1D | Poprzedza dane binarne | GS |
| 0001 1110 | 30 | 1E | Separator rekordów | RS |
| 0001 1111 | 31 | 1F | Separator pozycji | US |
| 0010 0000 | 32 | 20 | Spacja | |
| 0010 0001 | 33 | 21 | ! | |
| 0010 0010 | 34 | 22 | " | |
| 0010 0011 | 35 | 23 | # | |
| 0010 0100 | 36 | 24 | $ | |
| 0010 0101 | 37 | 25 | % | |
| 0010 0110 | 38 | 26 | & | |
| 0010 0111 | 39 | 27 | ' | |
| 0010 1000 | 40 | 28 | ( | |
| 0010 1001 | 41 | 29 | ) | |
| 0010 1010 | 42 | 2A | * | |
| 0010 1011 | 43 | 2B | + | |
| 0010 1100 | 44 | 2C | , | |
| 0010 1101 | 45 | 2D | - | |
| 0010 1110 | 46 | 2E | . | |
| 0010 1111 | 47 | 2F | / | |
| 0011 0000 | 48 | 30 | 0 | |
| 0011 0001 | 49 | 31 | 1 | |
| 0011 0010 | 50 | 32 | 2 | |
| 0011 0011 | 51 | 33 | 3 | |
| 0011 0100 | 52 | 34 | 4 | |
| 0011 0101 | 53 | 35 | 5 | |
| 0011 0110 | 54 | 36 | 6 | |
| 0011 0111 | 55 | 37 | 7 | |
| 0011 1000 | 56 | 38 | 8 | |
| 0011 1001 | 57 | 39 | 9 | |
| 0011 1010 | 58 | 3A | : | |
| 0011 1011 | 59 | 3B | ; | |
| 0011 1100 | 60 | 3C | < | |
| 0011 1101 | 61 | 3D | = | |
| 0011 1110 | 62 | 3E | > | |
| 0011 1111 | 63 | 3F | ? | |
| 0100 0000 | 64 | 40 | @ | |
| 0100 0001 | 65 | 41 | A | |
| 0100 0010 | 66 | 42 | B | |
| 0100 0011 | 67 | 43 | C | |
| 0100 0100 | 68 | 44 | D | |
| 0100 0101 | 69 | 45 | E | |
| 0100 0110 | 70 | 46 | F | |
| 0100 0111 | 71 | 47 | G | |
| 0100 1000 | 72 | 48 | H | |
| 0100 1001 | 73 | 49 | I | |
| 0100 1010 | 74 | 4A | J | |
| 0100 1011 | 75 | 4B | K | |
| 0100 1100 | 76 | 4C | L | |
| 0100 1101 | 77 | 4D | M | |
| 0100 1110 | 78 | 4E | N | |
| 0100 1111 | 79 | 4F | O | |
| 0101 0000 | 80 | 50 | P | |
| 0101 0001 | 81 | 51 | Q | |
| 0101 0010 | 82 | 52 | R | |
| 0101 0011 | 83 | 53 | S | |
| 0101 0100 | 84 | 54 | T | |
| 0101 0101 | 85 | 55 | U | |
| 0101 0110 | 86 | 56 | V | |
| 0101 0111 | 87 | 57 | W | |
| 0101 1000 | 88 | 58 | X | |
| 0101 1001 | 89 | 59 | Y | |
| 0101 1010 | 90 | 5A | Z | |
| 0101 1011 | 91 | 5B | [ | |
| 0101 1100 | 92 | 5C | \ | |
| 0101 1101 | 93 | 5D | ] | |
| 0101 1110 | 94 | 5E | ^ | |
| 0101 1111 | 95 | 5F | _ | |
| 0110 0000 | 96 | 60 | ` | |
| 0110 0001 | 97 | 61 | a | |
| 0110 0010 | 98 | 62 | b | |
| 0110 0011 | 99 | 63 | c | |
| 0110 0100 | 100 | 64 | d | |
| 0110 0101 | 101 | 65 | e | |
| 0110 0110 | 102 | 66 | f | |
| 0110 0111 | 103 | 67 | g | |
| 0110 1000 | 104 | 68 | h | |
| 0110 1001 | 105 | 69 | i | |
| 0110 1010 | 106 | 6A | j | |
| 0110 1011 | 107 | 6B | k | |
| 0110 1100 | 108 | 6C | l | |
| 0110 1101 | 109 | 6D | m | |
| 0110 1110 | 110 | 6E | n | |
| 0110 1111 | 111 | 6F | o | |
| 0111 0000 | 112 | 70 | p | |
| 0111 0001 | 113 | 71 | q | |
| 0111 0010 | 114 | 72 | r | |
| 0111 0011 | 115 | 73 | s | |
| 0111 0100 | 116 | 74 | t | |
| 0111 0101 | 117 | 75 | u | |
| 0111 0110 | 118 | 76 | v | |
| 0111 0111 | 119 | 77 | w | |
| 0111 1000 | 120 | 78 | x | |
| 0111 1001 | 121 | 79 | y | |
| 0111 1010 | 122 | 7A | z | |
| 0111 1011 | 123 | 7B | { | |
| 0111 1100 | 124 | 7C | | | |
| 0111 1101 | 125 | 7D | } | |
| 0111 1110 | 126 | 7E | ~ | |
| 0111 1111 | 127 | 7F | Delete | DEL |
Podsumowanie
Z powyższego artykułu dowiedzieliśmy się czym jest i do czego jest wykorzystwana tablica kodów ASCII. Poznaliśmy również różne rodzaje kodowania ASCII.
Tabela ASCII odegrała kluczową rolę w ewolucji informatyki. Dzięki niej możliwe było standaryzowanie sposobu reprezentacji znaków w systemach komputerowych. Chociaż dzisiaj mamy do dyspozycji znacznie bardziej rozbudowane systemy kodowania, takie jak Unicode, ASCII wciąż pozostaje ważnym elementem w świecie technologii.