返回信息流ASCII的设计很精巧
从2进制看
a: 0110 0001
A: 0100 0001
y: 0111 1001
Y: 0101 1001
z: 0111 1010
Z: 0101 1010
可以发现大小写字符的差别只存在于一个bit的数据上
利用这一点 应该可以使用位运算完成大小写转换 有兴趣的同学可以研究一下
=== 附表 ===
0x21:33:! 0x22:34:" 0x23:35:# 0x24:36:$
0x25:37:% 0x26:38:& 0x27:39:' 0x28:40:(
0x29:41:) 0x2a:42:* 0x2b:43:+ 0x2c:44:,
0x2d:45:- 0x2e:46:. 0x2f:47:/ 0x30:48:0
0x31:49:1 0x32:50:2 0x33:51:3 0x34:52:4
0x35:53:5 0x36:54:6 0x37:55:7 0x38:56:8
0x39:57:9 0x3a:58:: 0x3b:59:; 0x3c:60:<
0x3d:61:= 0x3e:62:> 0x3f:63:? 0x40:64:@
0x41:65:A 0x42:66:B 0x43:67:C 0x44:68:D
0x45:69:E 0x46:70:F 0x47:71:G 0x48:72:H
0x49:73:I 0x4a:74:J 0x4b:75:K 0x4c:76:L
0x4d:77:M 0x4e:78:N 0x4f:79:O 0x50:80:P
0x51:81:Q 0x52:82:R 0x53:83:S 0x54:84:T
0x55:85:U 0x56:86:V 0x57:87:W 0x58:88:X
0x59:89:Y 0x5a:90:Z 0x5b:91:[ 0x5c:92:\
0x5d:93:] 0x5e:94:^ 0x5f:95:_ 0x60:96:`
0x61:97:a 0x62:98:b 0x63:99:c 0x64:100:d
0x65:101:e 0x66:102:f 0x67:103:g 0x68:104:h
0x69:105:i 0x6a:106:j 0x6b:107:k 0x6c:108:l
0x6d:109:m 0x6e:110:n 0x6f:111:o 0x70:112:p
0x71:113:q 0x72:114:r 0x73:115:s 0x74:116:t
0x75:117:u 0x76:118:v 0x77:119:w 0x78:120:x
0x79:121:y 0x7a:122:z
这是一条镜像帖。来源:北邮人论坛 / soft-design / #22856同步于 2007/12/9
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖
[小讨论] 英文字符大小写转换
coolfantasy
2007/12/9镜像同步12 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
听好玩
【 在 coolfantasy (Cool) 的大作中提到: 】
: ASCII的设计很精巧
: 从2进制看
: a: 0110 0001
: ...................
试验了一下,还真是不错
void main(){
char a,b;
for(a=65;a<91;a++){
b=a^32;
printf("%c--%c\n",a,b);
}
}
差了 20H, 加减 32 或 异或 32~~ 异或比较好,输入哪个字母都可以
char funConvert(char &a){
if(a>=0x41&&a<=0x5a||a>=0x61&&a<=0x7a)
return (a^32);
return a;
}