代码
生成随机字符串, 代码如下
import java. util. Random;
public class test {
public static String genSixToSixteenPsw ( ) {
String val = "" ;
Random random = new Random ( ) ;
int numbers = random. nextInt ( 10 ) + 6 ;
for ( int i = 0 ; i < numbers; i++ ) {
String charOrNum = random. nextInt ( 2 ) % 2 == 0 ? "char" : "num" ;
if ( "char" . equalsIgnoreCase ( charOrNum) ) {
int choice = random. nextInt ( 2 ) % 2 == 0 ? 65 : 97 ;
val += ( char ) ( choice + random. nextInt ( 26 ) ) ;
} else if ( "num" . equalsIgnoreCase ( charOrNum) ) {
val += String. valueOf ( random. nextInt ( 10 ) ) ;
}
}
return val. toLowerCase ( ) ;
}
}
原理
要实现随机生成数字或字符串, 就要用到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 ~
简单来说, 就是通过判断ASCII 码来获取数字或字母; 看起来不难, 实际也不难; 写文章主要是记录, 方便以后使用;