טבלת ASCII
מהי ASCII?
ASCII (American Standard Code for Information Interchange) היא טבלת קידוד שממפה מספרים לתווים. לכל אות אנגלית, ספרה וסימן יש מספר משלו בטווח שבין 0 ל-127.
כפי שראינו, char ב-Java הוא למעשה המספר שמייצג את התו - וזו הסיבה שאפשר לבצע עליו
פעולות חשבון רגילות.
טווחים חשובים בטבלה
| תווים | קודים | דוגמה |
|---|---|---|
| תווים מיוחדים (בלתי נראים) | 0-31 | \n (10), \t (9) |
| רווח | 32 | ' ' |
| ספרות | 48-57 | '0'=48, '9'=57 |
| אות גדולה | 65-90 | 'A'=65, 'Z'=90 |
| אות קטנה | 97-122 | 'a'=97, 'z'=122 |
המרה בין תו למספר
char ch = 'A';
int code = ch; // 65
System.out.println(code);
int n = 66;
char letter = (char) n; // 'B'
System.out.println(letter);
פעולות שימושיות
בדיקה אם תו הוא ספרה
char ch = '5';
if (ch >= '0' && ch <= '9') {
System.out.println("ספרה");
}
או דרך Character:
if (Character.isDigit(ch)) {
System.out.println("ספרה");
}
המרת ספרה (תו) למספר
char digit = '7';
int number = digit - '0'; // 7
למה זה עובד? הקוד של '7' הוא 55 והקוד של '0' הוא 48, ולכן ההפרש
'7' - '0' שווה בדיוק ל-7.
בדיקה אם תו הוא אות
if (Character.isLetter(ch)) { }
if (Character.isUpperCase(ch)) { }
if (Character.isLowerCase(ch)) { }
המרה מקטנה לגדולה ולהיפך
char lower = 'a';
char upper = (char)(lower - 32); // 'A'
// (כי ההפרש בין אות קטנה לגדולה הוא תמיד 32)
// או הדרך הנקייה:
char upper2 = Character.toUpperCase(lower);
char lower2 = Character.toLowerCase('A');
ASCII מול Unicode
- ASCII - 7 ביט, 128 תווים. רק אנגלית.
- Unicode - מערכת עולמית. כולל עברית, ערבית, סינית, אימוג'ים ועוד.
ב-Java הטיפוס char מבוסס על Unicode. מכיוון ש-ASCII הוא תת-קבוצה של
Unicode - הקודים 0-127 זהים בשתי המערכות - כל הטקסט האנגלי ממשיך לעבוד בדיוק כרגיל.
עברית ב-Unicode
char hebrew = 'ש';
int code = hebrew; // 1513 (0x05E9)
System.out.println(code);
דוגמה: הדפסת כל האותיות באנגלית
for (char ch = 'a'; ch <= 'z'; ch++) {
System.out.print(ch + " ");
}
// a b c d e f g h i j k l m n o p q r s t u v w x y z
דוגמה: סכימת הספרות שבמחרוזת
String input = "a1b2c3";
int sum = 0;
for (int i = 0; i < input.length(); i++) {
char ch = input.charAt(i);
if (Character.isDigit(ch)) {
sum += (ch - '0');
}
}
System.out.println("סכום הספרות: " + sum); // 6
טבלת ASCII - תווים נפוצים
| תו | קוד | תו | קוד |
|---|---|---|---|
' ' |
32 | '0' |
48 |
'!' |
33 | '9' |
57 |
'"' |
34 | 'A' |
65 |
'#' |
35 | 'Z' |
90 |
'$' |
36 | 'a' |
97 |
'%' |
37 | 'z' |
122 |
'&' |
38 | '\n' |
10 |
'*' |
42 | '\t' |
9 |
'+' |
43 | '\0' |
0 |
בדקו את עצמכם
נסו לענות לבד לפני שאתם פותחים את התשובה.
-
מה התוצאה של
'7' - '0'ב-Java?הצגת התשובה
תשובה ד. char הוא מספר: הקוד של '7' הוא 55 ושל '0' הוא 48, וההפרש הוא 7.
-
מה הקשר בין ASCII ל-Unicode?
הצגת התשובה
תשובה א. Unicode מכסה את כל השפות, ו-128 התווים הראשונים שלו זהים ל-ASCII.