大小写字母快速转换

问题
如果要在大小写之间转换,如何提高速度?

思路
让我们观察大小写字母的ASCII码:

大写字母ASCII_DECASCII_BINASCII_BINASCII_DEC小写字母
A6501 0 0000101 1 0000197a
B6601 0 0001001 1 0001098b
Z9001 0 1101001 1 11010122z

测试代码

#include <stdio.h>
#include <stdlib.h>

void A2a(char * C) {
    for (int i = 0; C[i] != '\0'; i++) C[i] |= 32;  // 0100000
}

void a2A(char * C) {
    for (int i = 0; C[i] != '\0'; i++) C[i] &= 95;  // 1011111
}

void a2A_A2a(char * C) {
    for (int i = 0; C[i] != '\0'; i++) C[i] ^= 32;  // 0100000
}

int main() {

    char C1[98] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
    char C2[98] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
    char C3[98] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";

    printf("A2a:\n");
    printf("Before: %s\n\n", C1);
    A2a(C1);
    printf("After : %s\n\n", C1);
    printf("------------------------------------------------------------\n\n");

    printf("a2A:\n");
    printf("Before: %s\n\n", C2);
    a2A(C2);
    printf("After : %s\n\n", C2);
    printf("-------------------------------------------------------------\n\n");

    printf("a2A_A2a:\n");
    printf("Before: %s\n\n", C3);
    a2A_A2a(C3);
    printf("After : %s\n\n", C3);

    system("pause");

    return 0;
}

测试结果
这里写图片描述

弊端
注意这里只能在字母之间转换,当文本含有其他字符的时候,会将“无辜”的字符变成奇奇怪怪的字符。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值