【发布时间】:2016-01-27 09:04:46
【问题描述】:
有人可以解释一下这实际上是如何工作的,例如char input = 'a'。
我知道
result = result << 4 | *str + 9 & 0xf;
这是我目前的理解:
char input = 'a' ascii 值为 97。加 9 为 106,二进制中的 106 为 01101010。0xf = 15 (00001111),因此 01101010 & 00001111 = 00001010,这给出了 10 的值,结果是附加到结果上。
提前致谢。
【问题讨论】:
-
查看
*str和9 & 0xf处的值产生的位模式... -
搜索
bit operators和c。注意:我们可以告诉你,但你也必须付出一些努力。 -
输入时
result和*str的值是多少? -
代码,用于将
'a'转换为'f'或'A'转换为'F'转换为10转换为15可以是result = result << 4 | (*str -'a' + 10) & 0xf;。这有帮助吗?它与... *str + 9 & 0xf相同,只是少了一点混淆。 -
此代码已损坏,不适用于
'0'...'9'。由于问题中缺乏上下文而被否决。
标签: c++ c hex bit-manipulation converter