【Java】ASCII與字母互轉(程式碼整理)
阿新 • • 發佈:2019-02-05
ASCII(American Standard Code for Information Interchange,美國資訊交換標準程式碼)是基於拉丁字母的一套電腦編碼系統,主要用於顯示現代英語和其他西歐語言。
這是我轉換的程式碼工具類
ASCII 碼使用指定的7 位或8 位二進位制數組合來表示128 或256 種可能的字元。標準ASCII 碼也叫基礎ASCII碼,使用7 位二進位制數(剩下的1位二進位制為0)來表示所有的大寫和小寫字母,數字0 到9、標點符號, 以及在美式英語中使用的特殊控制字元。其中:package test; /** * Java中將一個字元與對應Ascii碼互轉 * 1 byte = 8bit 可以表示 0-127 */ public class GetCharAscii { /*0-9對應Ascii 48-57 *A-Z 65-90 *a-z 97-122 *第33~126號(共94個)是字元,其中第48~57號為0~9十個阿拉伯數字 */ public static void main(String[] args) { // System.out.println(charToByteAscii('9')); // System.out.println(byteAsciiToChar(57)); System.out.println(SumStrAscii("=")); System.out.println(SumStrAscii(">")); } /** * 方法一:將char 強制轉換為byte * @param ch * @return */ public static byte charToByteAscii(char ch){ byte byteAscii = (byte)ch; return byteAscii; } /** * 方法二:將char直接轉化為int,其值就是字元的ascii * @param ch * @return */ public static byte charToByteAscii2(char ch){ byte byteAscii = (byte)ch; return byteAscii; } /** * 同理,ascii轉換為char 直接int強制轉換為char * @param ascii * @return */ public static char byteAsciiToChar(int ascii){ char ch = (char)ascii; return ch; } /** * 求出字串的ASCII值和 * 注意,如果有中文的話,會把一個漢字用兩個byte來表示,其值是負數 */ public static int SumStrAscii(String str){ byte[] bytestr = str.getBytes(); int sum = 0; for(int i=0;i<bytestr.length;i++){ sum += bytestr[i]; } return sum; } }
(1)0~31及127(共33個)是控制字元或通訊專用字元(其餘為可顯示字元),如控制符:LF(換行)、CR(回車)、FF(換頁)、DEL(刪除)、BS(退格)、BEL(響鈴)等;通訊專用字元:SOH(文頭)、EOT(文尾)、ACK(確認)等;ASCII值為8、9、10 和13 分別轉換為退格、製表、換行和回車字元。它們並沒有特定的圖形顯示,但會依不同的應用程式,而對文字顯示有不同的影響。
(2)32~126(共95個)是字元(32是空格),其中48~57為0到9十個阿拉伯數字。
(3)65~90為26個大寫英文字母,97~122號為26個小寫英文字母,其餘為一些標點符號、運算子號等。
(4)同時還要注意,在標準ASCII中,其最高位(b7)用作奇偶校驗位。所謂奇偶校驗,是指在程式碼傳送過程中用來檢驗是否出現錯誤的一種方法,一般分奇校驗和偶校驗兩種。奇校驗規定:正確的程式碼一個位元組中1的個數必須是奇數,若非奇數,則在最高位b7添1;偶校驗規定:正確的程式碼一個位元組中1的個數必須是偶數,若非偶數,則在最高位b7添1。
(5)後128個稱為擴充套件ASCII碼。許多基於x86的系統都支援使用擴充套件(或“高”)ASCII。擴充套件ASCII 碼允許將每個字元的第8 位用於確定附加的128 個特殊符號字元、外來語字母和圖形符號。