1. 程式人生 > >【Java】ASCII與字母互轉(程式碼整理)

【Java】ASCII與字母互轉(程式碼整理)

ASCII(American Standard Code for Information Interchange,美國資訊交換標準程式碼)是基於拉丁字母的一套電腦編碼系統,主要用於顯示現代英語和其他西歐語言。

這是我轉換的程式碼工具類

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; 
} 
}
ASCII 碼使用指定的7 位或8 位二進位制數組合來表示128 或256 種可能的字元。標準ASCII 碼也叫基礎ASCII碼,使用7 位二進位制數(剩下的1位二進位制為0)來表示所有的大寫和小寫字母,數字0 到9、標點符號, 以及在美式英語中使用的特殊控制字元。其中:
(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 個特殊符號字元、外來語字母和圖形符號。