原文地址:http://blog.csdn.net/yaodong_y/article/details/8115250
字母與數字的ASCII碼
目 前計算機中用得最廣泛的 字符集及其編碼,是由美國國家標準局(ANSI)制定的ASCII碼(American Standard Code for Information Interchange,美國標準信息交換碼),它已被國際標準化組織(ISO)定爲國際標準,稱爲ISO 646標準。適用於所有拉丁文字字母,ASCII碼有7位碼和8位碼兩種形式。
因爲1位二進制數可以表示(21=)2種狀態:0、1;而 2位二進制數可以表示(22)=4種狀態:00、01、10、11;依次類推,7位二進制數可以表示(27=)128種狀態,每種狀態都唯一地編爲一個7 位的二進制碼,對應一個字符(或控制碼),這些碼可以排列成一個十進制序號0~127。所以,7位ASCII碼是用七位二進制數進行編碼的,可以表示 128個字符。
第0~32號及第127號(共34個)是控制字符或通訊專用字符,如控制符:LF(換行)、CR(回車)、FF(換頁)、DEL(刪除)、BEL(振鈴)等;通訊專用字符:SOH(文頭)、EOT(文尾)、ACK(確認)等;
第33~126號(共94個)是字符,其中第48~57號爲0~9十個阿拉伯數字;65~90號爲26個大寫英文字母,97~122號爲26個小寫英文字母,其餘爲一些標點符號、運算符號等。
注意:在計算機的存儲單元中,一個ASCII碼值佔一個字節(8個二進制位),其最高位(b7)用作奇偶校驗位。所謂奇偶校驗,是指在代碼傳送過程中用來 檢驗是否出現錯誤的一種方法,一般分奇校驗和偶校驗兩種。奇校驗規定:正確的代碼一個字節中1的個數必須是奇數,若非奇數,則在最高位b7添1;偶校驗規 定:正確的代碼一個字節中1的個數必須是偶數,若非偶數,則在最高位b7添1。
爲了便於查詢,以下列出ASCII碼錶:常用ASCII 碼對照表
ASCII碼 | 鍵盤 | ASCII 碼 | 鍵盤 | ASCII 碼 | 鍵盤 | ASCII 碼 | 鍵盤 |
27 | ESC | 32 | SPACE | 33 | ! | 34 | " |
35 | # | 36 | $ | 37 | % | 38 | & |
39 | ' | 40 | ( | 41 | ) | 42 | * |
43 | + | 44 | ' | 45 | - | 46 | . |
47 | / | 48 | 0 | 49 | 1 | 50 | 2 |
51 | 3 | 52 | 4 | 53 | 5 | 54 | 6 |
55 | 7 | 56 | 8 | 57 | 9 | 58 | : |
59 | ; | 60 | < | 61 | = | 62 | > |
63 | ? | 64 | @ | 65 | A | 66 | B |
67 | C | 68 | D | 69 | E | 70 | F |
71 | G | 72 | H | 73 | I | 74 | J |
75 | K | 76 | L | 77 | M | 78 | N |
79 | O | 80 | P | 81 | Q | 82 | R |
83 | S | 84 | T | 85 | U | 86 | V |
87 | W | 88 | X | 89 | Y | 90 | Z |
91 | [ | 92 | \ | 93 | ] | 94 | ^ |
95 | _ | 96 | ` | 97 | a | 98 | b |
99 | c | 100 | d | 101 | e | 102 | f |
103 | g | 104 | h | 105 | i | 106 | j |
107 | k | 108 | l | 109 | m | 110 | n |
111 | o | 112 | p | 113 | q | 114 | r |
115 | s | 116 | t | 117 | u | 118 | v |
119 | w | 120 | x | 121 | y | 122 |
z |
123 | { | 124 | | | 125 | } | 126 | ~ |
利用這個原理,編寫有用的小例子
- import java.util.Random;
- public class StringRandom {
- //生成隨機數字和字母,
- public String getStringRandom(int length) {
- String val = "";
- Random random = new Random();
- //參數length,表示生成幾位隨機數
- for(int i = 0; i < length; i++) {
- String charOrNum = random.nextInt(2) % 2 == 0 ? "char" : "num";
- //輸出字母還是數字
- if( "char".equalsIgnoreCase(charOrNum) ) {
- //輸出是大寫字母還是小寫字母
- int temp = random.nextInt(2) % 2 == 0 ? 65 : 97;
- val += (char)(random.nextInt(26) + temp);
- } else if( "num".equalsIgnoreCase(charOrNum) ) {
- val += String.valueOf(random.nextInt(10));
- }
- }
- return val;
- }
- public static void main(String[] args) {
- StringRandom test = new StringRandom();
- //測試
- System.out.println(test.getStringRandom(8));
- }
- }
測試結果:(8位)mP8V60yt