常見函數實作 (1) 大小寫轉換
由ASCII Table中我們可得知
' A ' = 0x41
' a ' = 0x61
因此兩者相差 0x20,因此我們可以採用以下兩種方式實作。
[ Way 1 ] 加減 0x20
void CharConv ( char * src )
{
while(*src != '\0')
{
if((*src >= 'A') && (*src <= 'Z'))
*src += 0x20;
else if((*src >= 'a') && (*src <= 'z'))
*src -= 0x20;
src++;
}
}
[ Way 2 ] Bit Operation
' A ' = 0x41 = 0100 0001
' a ' = 0x61 = 0110 0001
兩者可由BIT5的位元做交換,實現方式如下。
void CharConv ( char * src )
{
while(*src != '\0')
{
if((*src >= 'A') && (*src <= 'Z'))
*src |= 0x20;
else if((*src >= 'a') && (*src <= 'z'))
*src &= ~0x20;
src++;
}
}
主要概念為,採用bit operation的方式set / clear BIT5,以達到交換的目的。