ASCII Tabel

Referensi lengkap dari 128 karakter ASCII dengan kode desimal, heksadesimal, oktal, dan biner.

128 karakter ditampilkan

Tentang ASCII

ASCII (American Standard Code for Information Interchange) adalah standar pengkodean karakter 7-bit yang mendefinisikan 128 karakter. Pertama kali diterbitkan pada tahun 1963, ini adalah dasar dari sebagian besar pengkodean karakter modern, termasuk UTF-8.

Rentang karakter

Apa perbedaan antara ASCII dan Unicode?

ASCII mendefinisikan 128 karakter dalam 7 bit. Unicode adalah superset yang mencakup lebih dari 149.000 karakter dari semua sistem penulisan. 128 titik kode Unicode pertama identik dengan ASCII.

Bagaimana saya menggunakan kode-kode ini dalam pemrograman?

Di JavaScript: String.fromCharCode(65) → "A". Di Python: chr(65). Di C: (char)65. Nilai heksadesimal berfungsi dengan escape sequence: \x41 = "A".

Cara Kerjanya

  1. Telusuri tabel lengkap: semua 128 karakter ASCII muncul dalam kisi yang diurutkan berdasarkan code point (0 hingga 127). Setiap sel menampilkan karakter yang terlihat (atau singkatannya untuk kode kontrol), kode desimal, dan padanannya dalam heks / oktal / biner.
  2. Filter berdasarkan kategori: gunakan dropdown untuk mempersempit ke karakter kontrol (0-31), karakter yang dapat dicetak (32-126), huruf, digit, atau simbol. Berguna saat Anda hanya peduli pada, misalnya, blok tanda baca.
  3. Cari: kotak pencarian mencocokkan berdasarkan nama karakter («LF»), singkatan, atau nilai numerik (desimal atau heks). Mengetik 0x41, 65, atau A semuanya menuju ke sel yang sama.
  4. Klik sel untuk menyalin representasinya ke clipboard. Praktis saat Anda membutuhkan \x1B untuk escape ANSI, 0x0A untuk baris baru Unix, atau desimal 32 untuk spasi.

Sejarah Singkat ASCII

ASCII (American Standard Code for Information Interchange) diusulkan oleh insinyur IBM Bob Bemer kepada subkomite X3.2 American Standards Association pada Mei 1961, dengan tujuan menggantikan selusin kode karakter yang tidak kompatibel yang digunakan saat itu. Edisi pertama yang diterbitkan adalah ASA X3.4-1963; huruf kecil baru hadir pada revisi 1967. Standar ini telah ditegaskan kembali beberapa kali sejak saat itu dengan nama ANSI X3.4-1986, dan membentuk dasar dari setiap pengkodean karakter modern melalui kembarannya yang internasional, ISO/IEC 646 (dan ECMA-6 Eropa).

Untuk penggunaan jaringan, ASCII dikodifikasi oleh RFC 20, «ASCII format for Network Interchange», yang diterbitkan pada 16 Oktober 1969 dan ditulis oleh Vint Cerf di UCLA. Rekomendasi RFC («7-bit ASCII yang disematkan dalam byte 8-bit dengan bit orde tinggi selalu 0») masih merupakan cara setiap bahasa pemrograman modern dan protokol memandang teks biasa. Pemerintah Federal AS, melalui perintah eksekutif dari Presiden Lyndon B. Johnson pada 1968, mewajibkan dukungan ASCII pada semua komputer federal mulai 1 Juli 1969 dan seterusnya, yang memastikan adopsi di seluruh industri.

Mengapa Tujuh Bit?

Komite X3.2 terjebak di antara dua pilihan yang tidak menarik. Kode 6-bit (yang digunakan oleh alfabet telegraf lama seperti ITA2) tidak dapat diandalkan: satu bit-flip pada jalur yang bising dapat mendekode salah setiap karakter berikutnya jika terjadi pada shift bit. Kode 8-bit tampak boros di era memori mahal dan modem lambat. Komprominya adalah 7 bit = 128 code point, menyisakan bit ke-8 bebas untuk parity. Mengatur parity bit sehingga setiap byte memiliki jumlah total bit-1 yang genap (atau ganjil) menangkap 100% kesalahan transmisi satu bit, tepat masalah yang dihasilkan oleh acoustic coupler dan kabel serial tahun 1960-an.

Seiring menurunnya tingkat kesalahan dan modem yang semakin cepat, bit ke-8 digunakan ulang. Berbagai halaman kode «extended ASCII» nasional (Latin-1, Windows-1252, Mac Roman, KOI8-R, …) menggunakan kode 128-255 untuk huruf beraksen dan karakter box-drawing, tetapi pemetaan tersebut saling tidak kompatibel dan akhirnya tergantikan oleh Unicode dan UTF-8.

Tata Letak: 128 Code Point

7 bit = 27 = 128 kode berbeda, diorganisasikan sebagai 33 karakter kontrol (0-31 ditambah DEL di 127) dan 95 karakter yang dapat dicetak (32-126):

RentangHexIsi
0-3100-1FKarakter kontrol (NUL, BEL, BS, HT, LF, CR, ESC, FS-US, …)
3220SPACE, dapat dicetak namun tidak terlihat
33-4721-2FTanda baca: ! " # $ % & ' ( ) * + , - . /
48-5730-39Digit 0-9
58-643A-40Tanda baca lainnya: : ; < = > ? @
65-9041-5AHuruf besar A-Z
91-965B-60Tanda kurung dan simbol: [ \ ] ^ _ `
97-12261-7AHuruf kecil a-z
123-1267B-7EKurung kurawal dan tilde: { | } ~
1277FDEL, «rub out» pada pita kertas berlubang (biner 1111111)

Karakter Kontrol yang Masih Relevan

Sebagian besar dari 33 karakter kontrol berasal sebagai perintah teletype dan pita kertas dan kini hanya merupakan keunikan sejarah. Beberapa masih menjadi komponen penting dalam komputasi sehari-hari:

Perang Akhir Baris

Tiga platform memilih tiga konvensi berbeda, dan perangkat lunak telah membayar harganya sejak saat itu. Asal-usul mekanisnya adalah mesin ketik dan teletype, di mana dua tindakan terpisah diperlukan: carriage return memindahkan kepala cetak kembali ke kolom 1, dan line feed memajukan kertas satu baris. Sistem yang berbeda membuat keputusan yang berbeda tentang apakah hal ini dikodekan sebagai satu atau dua byte:

OSBaris BaruBytesEscape
Unix / Linux / macOS modernLF0x0A\n
Mac OS Klasik (sebelum OS X)CR0x0D\r
Windows / DOSCRLF0x0D 0x0A\r\n

Protokol internet sebagian besar mewajibkan CRLF: HTTP, SMTP, FTP, MIME, dan Internet Message Format standar semuanya menetapkannya. RFC 5322 tidak ambigu: «CR dan LF HARUS hanya muncul bersama sebagai CRLF; TIDAK BOLEH muncul secara terpisah» dalam badan pesan. Di dalam kode sumber, konvensinya bervariasi per tim, itulah mengapa git dilengkapi core.autocrlf: dengan true di Windows, git melakukan checkout file sebagai CRLF di working tree tetapi menyimpannya sebagai LF di repo, sehingga file sumber yang sama menghasilkan blob hash yang sama di setiap platform. Entry .gitattributes seperti * text=auto adalah alternatif tingkat proyek.

Urutan Escape ANSI untuk Warna Terminal

Karakter escape (ESC, 0x1B) adalah prefiks untuk urutan escape ANSI yang mewarnai output terminal. Standarnya adalah ECMA-48 (1976), yang kemudian dicerminkan sebagai ANSI X3.64 dan digabungkan ke ISO/IEC 6429. Grammarnya adalah ESC [ + parameter + satu huruf akhir; bagian ESC [ disebut Control Sequence Introducer (CSI) dan ditulis secara bervariasi sebagai \e[, \x1b[, atau \033[ tergantung pada bahasa. Kode Select Graphic Rendition umum:

Jadi printf '\033[1;31mERROR\033[0m' mencetak «ERROR» dalam warna merah tebal dan mereset setelahnya. Setiap emulator terminal modern (dan Windows Terminal sejak 2019) mendukung ini.

ASCII vs Unicode dan UTF-8

ASCII mendefinisikan 128 code point; Unicode 16.0 (dirilis 2024) mencakup lebih dari 154.000. Jembatan krusialnya adalah UTF-8, pengkodean teks yang dominan di web (digunakan oleh ~98% situs web pada 2026): UTF-8 dirancang sehingga setiap byte ASCII 7-bit (0x00-0x7F) mengkodekan karakter yang sama seperti yang selalu dilakukannya, dengan bit tinggi nol. Konsekuensi praktisnya adalah setiap file ASCII yang valid juga merupakan file UTF-8 yang valid, identik byte per byte. Code point di atas 127 dikodekan sebagai urutan multi-byte (2 hingga 4 byte) dengan bit tinggi diset pada setiap byte, yang memastikan parser ASCII warisan tidak pernah mengacaukannya dengan karakter ASCII.

ASCII dalam Bahasa Pemrograman Umum

BahasaKode → karakterKarakter → kode
JavaScriptString.fromCharCode(65)'A'.charCodeAt(0)
Pythonchr(65)ord('A')
C / C++(char)65(int)'A'
Java(char) 65(int) 'A'
Rustchar::from(65)'A' as u32
Gostring(rune(65))int('A')
Bash / shprintf '\x41'printf '%d' "'A"
HTML&#65; atau &#x41;-
Enkoding URL%41 = «A», %20 = spasi-

Trik Bit Kasus

Sifat kecil namun elegan dari tata letak ASCII: huruf besar dan pasangan huruf kecilnya berbeda tepat pada satu bit. A adalah 65 = 0100 0001; a adalah 97 = 0110 0001. Hanya bit 5 yang berbeda. Itu membuat perbandingan case-insensitive menjadi satu operasi bitwise: x | 0x20 memaksa huruf kecil, x & 0xDF memaksa huruf besar, keduanya lebih cepat daripada tabel pencarian. Ini adalah pilihan desain yang disengaja dalam revisi 1967 dan merupakan salah satu alasan tata letak tampak «acak» di beberapa tempat: ia mengkodekan properti yang ramah perangkat keras, bukan sekadar urutan alfabet.

Kesalahan Umum

  1. Mengacaukan angka 0 dengan karakter kontrol NUL. NUL adalah kode 0; karakter «0» adalah kode 48. Keduanya tidak dapat dipertukarkan dalam bahasa pemrograman mana pun.
  2. Menganggap satu byte adalah satu karakter. Hanya benar untuk teks ASCII. Teks UTF-8 memiliki karakter dengan lebar variabel, sehingga panjang byte dan jumlah karakter dapat sangat berbeda untuk skrip non-Latin.
  3. Mencampur akhir baris dalam satu file. Campuran CR / LF / CRLF dalam file yang sama membingungkan banyak parser dan menghasilkan baris kosong hantu atau baris baru yang hilang tergantung OS mana yang membukanya.
  4. Off-by-one dalam terminasi string C. Melupakan bahwa string memerlukan satu byte tambahan untuk NUL di akhir adalah kerentanan buffer-overflow yang asli.
  5. «Extended ASCII» dianggap portabel. Kode 128-255 berarti karakter yang berbeda dalam Latin-1, Windows-1252, KOI8-R, Mac Roman, dll. UTF-8 adalah satu-satunya pilihan modern yang aman.
  6. ESC tertanam dalam input yang tidak terpercaya. Jika Anda mencatat data yang disediakan pengguna ke terminal tanpa membersihkannya, penyerang dapat menyuntikkan urutan escape ANSI yang mengubah warna, memindahkan kursor, atau menghapus layar, kadang-kadang menyembunyikan konten berbahaya.

Pertanyaan yang Sering Diajukan

Mengapa DEL memiliki kode 127 bukan 0?

Karena 127 dalam biner adalah 1111111: semua tujuh bit diset. Untuk menghapus karakter pada pita kertas berlubang, operator memundurkan pita dan menekan RUB OUT, yang melubangi setiap lubang yang ada. Penerima seharusnya mengabaikan byte yang semuanya 1, sehingga karakter yang «dihapus» menjadi tidak terlihat pada pembacaan berikutnya. Konvensi ini diwarisi dari kode teletype yang lebih awal.

Apa itu «extended ASCII» dan apakah aman untuk digunakan?

ASCII standar mencakup code point 0-127 (7 bit). «Extended ASCII» secara longgar mengacu pada pengkodean 8-bit yang mengisi code point 128-255 dengan karakter tambahan, Latin-1, Windows-1252, KOI8-R, Mac Roman, dan banyak lainnya. Masalahnya: karakter tambahan berarti hal yang berbeda di setiap pengkodean. Namanya secara teknis adalah kesalahan penyebutan (halaman kode tersebut bukan ekstensi dari standar ASCII), dan tidak aman digunakan di berbagai sistem. UTF-8 adalah pengganti modern yang portabel dan kompatibel ke belakang dengan rentang asli 0-127.

Mengapa spasi (32) dianggap «dapat dicetak» jika tidak menampilkan apa pun?

Karena ia menempati ruang horizontal pada baris yang dicetak, ia memajukan kepala cetak persis seperti yang dilakukan huruf. Karakter kontrol sebaliknya mengubah status perangkat tanpa menghasilkan output yang terlihat (BEL berbunyi bip, BS memindahkan kepala ke belakang, LF memajukan kertas). Klasifikasi ini didasarkan pada apa yang dilakukan karakter pada printer, bukan pada apakah ia memiliki glyph.

Apakah CR dan LF sama dengan tombol Enter di keyboard saya?

Sebagian besar ya, tetapi byte yang dihasilkan keyboard Anda bergantung pada OS. Di Windows, menekan Enter biasanya menghasilkan CRLF (0x0D 0x0A); di Linux dan macOS modern, hanya LF (0x0A); di Mac OS klasik pra-X, hanya CR (0x0D). Banyak editor menormalkan ini saat menyimpan berdasarkan akhir baris yang ada di file atau konvensi proyek yang dikonfigurasi.

Mengapa pemisah file/grup/rekaman/unit ada di sini?

Mereka dirancang untuk penyimpanan kaset berorientasi rekaman pada 1960-an, File > Group > Record > Unit. Sebagian besar jatuh dari penggunaan, tetapi telah kembali di dua tempat yang mengejutkan: RFC 7464 «JSON Text Sequences» (tipe media application/json-seq) menggunakan RS (0x1E) sebagai prefiks untuk membatasi rekaman JSON yang di-stream, dan pemisah GS1 Application Identifier dalam protokol barcode ritel menggunakan GS (0x1D).

Apakah ASCII masih relevan di 2026?

Sangat. Setiap protokol modern yang «berbasis teks» (header HTTP, JSON, YAML, kode sumber, argumen baris perintah, variabel lingkungan, nama host DNS) beroperasi dalam rentang ASCII. UTF-8 adalah pengkodean yang dominan untuk teks sembarang, tetapi 128 nilai byte pertama UTF-8 adalah persis ASCII, byte per byte. Mengetahui tabel ini masih diperlukan untuk segalanya mulai dari enkoding URL hingga warna terminal hingga debugging bug pengkodean teks.

Alat terkait

Biner ke Teks Konverter Angka Base Konverter HTML Entity Pengkode / Pengdekode Pencari Keycode JavaScript