如何仅使用位操作将大写转换为小写,反之亦然?
答案 0 :(得分:2)
在ASCII中,大写字符以010为前缀,然后是二进制的1-26 [它们在字母表中的位置]。小写以011为前缀。
通过使用按位OR操作数和00100000掩码0b00100000,32整数,可以将大写转换为小写,而不是更改小写。
例如
char character = 0b00100000 | 'A';
或
char character = 32 | 'A';
要转换为大写,请使用
char character = 0b01011111 & 'a';
或
char character = 95 & 'a';
您可以使用任何方式表示127或95作为位掩码来执行AND操作。
答案 1 :(得分:0)
如果查看ASCII table,可以看到字符'a'
的值为97(十进制),字符'A'
为65.这是32的差异。因此,要从一个转换为另一个,请添加或减去该数字。
C:
中的示例int main(int argc, char *argv[]){
char a = 'a'; //a is now lowercase
printf("\n%c", a);
a = a - 32;
printf("\n%c", a); //a is now uppercase
a = 'B';
printf("\n%c", a); //a is now uppercase
a = a + 32;
printf("\n%c", a); //a is now lowercase
return 0;
}