字符转换为整数的问题

来源:百度知道 编辑:UC知道 时间:2024/06/21 09:27:24
在转换16进制的时候有一句
value = value * radix + (*str | 0x20) - 'a' + 10;
请问上句中的“(*str | 0x20)”是什么意思
与下句
value = value * radix + *str - 'a' + 10;
执行起来有区别么

str是指字符串指针
*str就是指针所指的字符

*str|0x20的作用是把字母转换成小写的。
你看一下ascii表,就清楚了。
例如大写字母A的ascii码是65,转换成二进制是01000001
而小写字母a的ascii码是97,转换成二进制是01100001
0x20转换成二进制就是00100000
通过或操作把第6位转换成1,也就变成了小写字母了~

如果用下面这句,如果输入的是大写字母,转换就会出现问题了