我正在尝试将Python实用程序转换为Ruby。问题是我不太了解python。
实用程序的一个片段包括以下if
条件:
if bits&0x10==0x10:
这是什么意思?比特是一个变量。它是否是某种"缩短"&&",意味着如果位为非零并且的值为0x10?谢谢
&
单独是位和运算。Ie,将bits
与0x10逐位进行比较,如果两者对于该位置都具有1
的位,则结果对于该位置为1
,否则为0。
基本上,由于0x10是二进制的10000,这是在检查bits
中的第5位是否设置为1
。
我不太了解ruby,但我的猜测是,它应该有一个位和运算符,它可能也是&
。因此,这段特定的代码在ruby中最终会完全相同。
编辑:根据Ruby Operators页面。在"Ruby Bitwise Operators"一节中,&
充当了Ruby中的一个Bitwise,因此您可以在实用程序的翻译中保持原样,它确实应该有效。
它实际上检查变量位的第5位是否设置为
的工作原理
-
&是比特式的安定。
-
0x10是二进制值0b10000 的十六进制
-
因此,您可以用
0b10000
稍微了解一下bits
中的内容
此外,Ruby支持类似的结构,用于逐位测试
if (bits&0x10)
......
end
注意,正如Tim所提到的,您的Python构造可以简化为
if bits&0x10:
.......
amp;是二进制位"and"运算符。
0x10是十六进制10。
你可能想在这里阅读python文档
http://docs.python.org/2/reference/expressions.html