英文母字母轉換
如果有一個英文字母為大寫(Uppercase),要將它轉成為小寫(Lowercase)的話
要如何轉換呢?
先來看看英文字母的ASCII(d表示Decimal(預設)h表示Hexadecimalb表示Binary)
大寫A~Z所對應的ASCII碼範圍為65~90 
小寫a~z所對應的ASCII碼範圍為97~122
相同英文字母的大小寫差32
由此推由若A要變成小寫的a要加32;反之減32

範例1
::::::::::::::::::::::::::::::::::::::::::::::
#include<iostream>
using namespace std;
void main()
{
	char ch = 'a';
	cout<<"The lowercase character:"<<ch<<endl;
	ch = ch - 32;
	cout<<"The uppercase character:"<<ch<<endl;
}
::::::::::::::::::::::::::::::::::::::::::::::
但是否有其它的方法呢?有的,可以使用ANDOR來做轉換,先瞭解大小寫位元的差別
舉個例子,英文字母大寫A與小寫a的二進制表示
 bit  7 6 5 4 3 2 1 0 
  A = 0 1 0 0 0 0 0 1 b
  a = 0 1 1 0 0 0 0 1 b
注意bit 5,大寫與小寫字母差在bit 5(即十進位值32)
大寫轉換成小寫時,可以利用OR來轉換,將大寫字母與00100000b(20h)OR
即可轉為小寫
EX:
	A =   0100 0001 b
	  OR  0010 0000 b
	       --------------
	         0110 0001 b = a
小寫轉換成大寫時,可以利用AND來轉換,將小寫字母與11011111b(DFh)AND
即可轉為大寫 
EX:
	a =   0110 0001 b
	 AND 1101 1111 b
	       --------------
	         0100 0001 b = A
範例2.
::::::::::::::::::::::::::::::::::::::::::::::
#include<iostream>
using namespace std;
void main()
{
	char ch = 'a';
	cout<<"The lowercase character:"<<ch<<endl;
	ch = ch & 0xDF;
	cout<<"The uppercase character:"<<ch<<endl;
}
::::::::::::::::::::::::::::::::::::::::::::::
那有沒有更簡單的方法呢?當然有的,不過這是最懶的方法,就是直接使用函數
(1)toupper 轉換為大寫英文字母 需引入#include<cctype>or#include<ctype.h>
(2)tolower 轉換為小寫英文字母 需引入#include<cctype>or#include<ctype.h>
範例3.
::::::::::::::::::::::::::::::::::::::::::::::
#include<iostream>
#include<cctype>
using namespace std;
void main()
{
	char ch = 'a';
	cout<<"The lowercase character:"<<ch<<endl;
	ch = toupper(ch);
	cout<<"The uppercase character:"<<ch<<endl;
}
::::::::::::::::::::::::::::::::::::::::::::::
還有沒有其它方法呢?還是有的,不過現在已經夠用了也是最常見的!!!

回目錄
Written By James On 2004/02/08 

Hosted by www.Geocities.ws

1