ASCII to 7-bitowy kod znaków, który przypisuje wartościom od 0 do 127 konkretne znaki drukowalne albo funkcje sterujące.
Konwerter ASCII online
Wpisz tekst albo kody liczbowe i wybierz tryb konwersji. Narzędzie obsługuje zapis dziesiętny DEC, szesnastkowy HEX, binarny BIN i ósemkowy OCT.
Konwerter ASCII
Wybierz tryb, wpisz tekst albo kody i kliknij „Konwertuj”. Narzędzie obsługuje podstawowe ASCII, czyli zakres 0–127.
Limit: 5000 znaków tekstu albo 2000 kodów w jednej konwersji.
Co to jest ASCII?
ASCII, czyli American Standard Code for Information Interchange, powstał jako kod do wymiany informacji między systemami przetwarzania danych, urządzeniami komunikacyjnymi i sprzętem powiązanym. W podstawowej wersji używa 7 bitów, więc daje 128 możliwych kodów. W bajcie 8-bitowym najstarszy bit pozostaje poza samym kodem ASCII.
Zakres ASCII dzieli się na dwie główne części. Kody 0-31 oraz 127 są znakami sterującymi. Kody 32-126 są znakami drukowalnymi: spacją, cyframi, literami alfabetu łacińskiego i podstawowymi symbolami. To dlatego ASCII dobrze opisuje prosty tekst angielski, ale nie wystarcza do zapisu polskich liter.
| Zakres DEC | Typ | Zawartość |
|---|---|---|
| 0-31 | Znaki sterujące | NUL, TAB, LF, CR, ESC i inne kody kontrolne |
| 32 | Spacja | Pierwszy znak drukowalny |
| 33-47 | Symbole | Między innymi !, ", #, $, %, &, (, ), *, +, przecinek i ukośnik |
| 48-57 | Cyfry | Znaki tekstowe od 0 do 9 |
| 65-90 | Wielkie litery | A-Z |
| 97-122 | Małe litery | a-z |
| 127 | DEL | Historyczny znak usunięcia |
Jak czytać kody ASCII DEC, HEX, BIN i OCT?
Ten sam kod można zapisać w różnych systemach liczbowych. Litera A ma wartość 65 w DEC, 41 w HEX, 01000001 w BIN i 101 w OCT. Zmienia się zapis liczby, nie sam znak.
| Znak | DEC | HEX | BIN | OCT | Znaczenie |
|---|---|---|---|---|---|
A | 65 | 41 | 01000001 | 101 | Wielka litera A |
a | 97 | 61 | 01100001 | 141 | Mała litera a |
0 | 48 | 30 | 00110000 | 60 | Cyfra zero jako znak tekstowy |
SP | 32 | 20 | 00100000 | 40 | Spacja |
Znaki sterujące ASCII
Znaki sterujące nie są zwykłymi literami ani symbolami. Część z nich pochodzi z czasów terminali i transmisji tekstowej, ale nadal pojawia się w plikach, protokołach, konsolach i analizie danych bajtowych.
| Nazwa | DEC | HEX | Znaczenie techniczne |
|---|---|---|---|
NUL | 0 | 00 | Znak pusty; w C używany jako terminator łańcucha znaków |
TAB | 9 | 09 | Tabulator poziomy |
LF | 10 | 0A | Line feed, czyli przejście do nowej linii |
CR | 13 | 0D | Carriage return; razem z LF tworzy zapis CRLF |
ESC | 27 | 1B | Początek sekwencji sterujących terminala |
DEL | 127 | 7F | Historyczny znak usunięcia |
ASCII a UTF-8
UTF-8 zachowuje zgodność z ASCII w zakresie U+0000-U+007F. To znaczy, że zwykły tekst złożony tylko ze znaków ASCII ma taki sam zapis bajtowy w ASCII i UTF-8. Znak A nadal ma bajt 0x41, spacja 0x20, a znak 0 bajt 0x30.
Różnica zaczyna się poza zakresem 127. Litery ą, ę, ł, znak euro i emoji nie są znakami podstawowego ASCII. W UTF-8 są zapisywane jako sekwencje wielobajtowe, więc nie da się ich przedstawić jednym kodem ASCII.
| Znak | Czy mieści się w ASCII? | Uwagi |
|---|---|---|
A | Tak | DEC 65, HEX 41 |
7 | Tak | DEC 55, HEX 37 |
? | Tak | DEC 63, HEX 3F |
ł | Nie | Znak spoza podstawowego ASCII |
€ | Nie | Znak spoza podstawowego ASCII |
🙂 | Nie | Znak Unicode, nie ASCII |
Do czego przydaje się konwersja ASCII?
Konwersja ASCII jest potrzebna wtedy, gdy tekst trzeba zobaczyć jako konkretne wartości bajtowe. Dotyczy to terminali, protokołów tekstowych, plików logów, transmisji UART, debugowania ramek danych i prostego parsowania wejścia.
W języku C dobrze widać różnicę między cyfrą jako znakiem a liczbą jako wartością. Znak '5' ma kod ASCII 53, a znak '0' ma kod 48. Jeżeli program odbiera cyfrę jako znak i chce uzyskać wartość liczbową, można odjąć kod znaku zero:
char char_cyfra = '5';
int liczba = char_cyfra - '0';
Wynik to 5, ponieważ wykonywane jest odejmowanie kodów ASCII: 53 - 48 = 5. To prosty przykład, ale dokładnie na takim poziomie działa wiele parserów tekstu, komend terminalowych i obsługi danych wejściowych z portu szeregowego.
Drugi praktyczny przypadek to końce linii. Jeżeli urządzenie wysyła po UART komendę zakończoną bajtami 0D 0A, to nie są dwa widoczne znaki, tylko para CRLF. Odbiornik musi wiedzieć, czy końcem ramki jest LF, CR, CRLF, czy inny separator.
Wniosek
ASCII jest małym standardem, ale nadal przydatnym w pracy technicznej. Daje stałe mapowanie znaków na wartości 0-127, pozwala szybko rozpoznać znaki sterujące i ułatwia debugowanie tekstu. Przy każdym tekście spoza prostego alfabetu łacińskiego trzeba jednak przejść z ASCII na Unicode i konkretne kodowanie, najczęściej UTF-8.

