[ C語言生活記事 ] 常見函數實作 (1) 大小寫轉換

常見函數實作 (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,以達到交換的目的。