ASCII ve UTF-8
- C kursu
- İleri seviye
- Ders 61/83
- 5 dk
ASCII ve UTF-8 arasındaki farkı öğrenirsin.
ASCII ve UTF-8
ASCII 0-127 arası 7 bitlik bir tablodur; her harf tek bayttır. UTF-8, Unicode'un değişken uzunluklu kodlamasıdır: ASCII karakterler tek bayt, Latin dışı karakterler 2-4 bayt olur.
C'de char bir bayttır ve strlen bayt sayar; bu yüzden strlen("Merhaba") 7 dönerken strlen("çağ") 5 döner ('ç' ve 'ğ' ikişer bayttır).'A' harfının ASCII değeri 65'tir. Bayt ile karakter sayısı arasındaki fark UTF-8'in temelidir.
Bayt saymak
'A' karakterinin ASCII değerini yazdırmak için printf("%d", 'A'); yazarsın; bu 65 basar. Bir dizenin bayt sayısını strlen verir.
Örnek: strlen("Merhaba") 7 döner; 'M', 'e', 'r', 'h', 'a', 'b', 'a' yedi bayttır. ASCII aralığındaki dize için bayt ve karakter sayısı aynıdır. Bu bilgi, UTF-8 işlemenin temelidir: önce bayt sayısını öğrenir, sonra karakterleri çözersin.
Uygulama ASCII değer ve bayt sayısı
printf("ASCII: %d\n", 'A'); ile 'A' karakterinin ASCII değerini yazdır. printf("bayt: %zu\n", strlen("Merhaba")); ile dizenin bayt sayısını yazdır. <string.h> başlığını unutma.
Başlangıç kodu
#include <stdio.h>
#include <string.h>
// 'A' harfinin ASCII değerini %d ile yazdır
// "Merhaba" dizesinin bayt sayısını strlen ile yazdır
int main(void) {
return 0;
}Örnek çözüm
#include <stdio.h>
#include <string.h>
int main(void) {
printf("ASCII: %d\n", 'A');
printf("bayt: %zu\n", strlen("Merhaba"));
return 0;
}Beklenen çıktı
ASCII: 65 bayt: 7
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 UTF-8'de 'ü' harfi kaç bayttır?
- 2 Doğru cevap
- 1
- 3
- 4
Açıklama: 'ü' Latin dışı bir harf olduğu için UTF-8'de 2 bayttır.
2 Dize boyunu bul
int n = strlen("____");
int n = strlen("Merhaba");
Açıklama: strlen("Merhaba") 7 döner.
3 Kavramları eşle
| Kavram | Anlamı |
|---|---|
ASCII |
7 bit 0-127 |
UTF-8 |
Değişken uzunluk |
char |
Tek bayt |
strlen |
Bayt sayar |