Bilangan bulat tetap sama
Bilangan desimal 65, biner 1000001 dan heksadesimal 41 adalah tiga notasi untuk satu bilangan bulat nonnegatif. Basis mengubah bagaimana nilai ditulis, bukan apa yang dihitung. Masukkan 65 ke dalam konverter desimal-ke-binari dan kemudian bandingkan hasil alat desimal-ke-heksadesimal. Nol depan dapat ditambahkan untuk menampilkan byte delapan-bit lengkap, memberikan 01000001, tetapi pilihan tampilan itu tidak mengubah bilangan bulat. Binary-to-decimal dapat membalikkan notasi numerik. Aliran kerja ini masuk akal untuk identifikator, bit mask atau hitungan yang diketahui sebagai bilangan bulat.
Teks pertama memerlukan enkoding karakter
Huruf A adalah karakter teks. UTF-8 mewakilinya dengan satu byte 0x41, yang pola bitnya adalah 01000001. Hal ini terjadi untuk cocok dengan contoh integer di atas karena karakter ASCII menduduki nilai byte tersebut dalam UTF-8. Namun string "65" berisi dua karakter, 6 dan 5; byte UTF-8 adalah 0x36 dan 0x35. Melakukan konversi angka pada 65 dan konversi teks-ke-byte pada "65" oleh karena itu menjawab pertanyaan yang berbeda. Periksa apakah sumber berarti nilai numerik atau karakter yang diketik secara harfiah.
- Bilangan bulat 65₁₀ = 41₁₆ = 1000001₂
- Teks “A” → UTF-8 byte 41₁₆
- Teks “65” → UTF-8 bytes 36 35₁₆
Teks yang diaksenasi menunjukkan perbedaannya
Karakter é diwakili dalam UTF-8 oleh dua byte, C3 A9 dalam heksadesimal. Titik kode Unicodenya adalah U+00E9, dan juga dapat diekspresikan dengan e diikuti oleh aksen kombinasi dalam bentuk normalisasi yang berbeda. Sebuah teks-ke-binary tool dapat menunjukkan dua kelompok delapan-bit untuk bentuk UTF-8 yang disusun, daripada satu kelompok delapan-bit untuk satu huruf yang terlihat. Melakukan titik kode karakter seolah-olah itu adalah satu byte akan kehilangan informasi atau menghasilkan keluaran yang salah. Gunakan tampilan byte UTF-8 ketika menyelesaikan masalah protokol teks, bukan alat integer desimal-ke-heksa.
Lihat batas dan pemisah
String biner 0100000101000010 dapat dibaca sebagai dua byte, 01000001 dan 01000010, yang mengeja AB di bawah UTF-8. Tanpa encoding karakter yang diketahui dan aturan pengelompokan bit, string bit kosong adalah ambigu. Decimal 4142 tidak sama dengan heksadesimal 4142, dan tidak berarti secara otomatis dua byte teks. Prefiks seperti 0x untuk heksadesimal dan ruang eksplisit antara byte membuat rekaman lebih mudah dibaca. Sebelum mendekodi data yang ditempel, pertahankan pemisah aslinya dan cari tahu apakah nol depan signifikan dalam format sekitarnya.
Pilih periksa yang dapat diulang
Untuk konversi angka, catat bilangan bulat asal beserta basisnya, ubah ke basis tujuan, lalu balikkan dengan alat numerik yang sesuai. Untuk teks, catat karakter asal, bentuk normalisasinya jika relevan, dan byte UTF-8; setelah itu dekode byte dengan alat teks pasangannya. Cobalah A, 65, dan é sebagai tiga masukan yang terpisah. Jika hasil salinan tampak terlalu panjang, hitung byte dan periksa apakah masukan berisi spasi, akhir baris, atau karakter non-ASCII. Kedua alur ini dapat bertemu pada nilai byte yang sama, tetapi artinya ditentukan oleh kontrak data asal. Tuliskan pula apakah data yang disalin berupa bilangan, urutan byte, atau teks supaya penerima tidak menebak-nebak cara membacanya.