我正在尝试将 Python 实用程序翻译成 Ruby。问题是对python不太了解。
该实用程序的一个片段包括以下if
条件:
if bits&0x10==0x10:
这意味着什么?位是一个变量。它是某种“缩短的”“&&”,意思是如果位非零且值为 0x10?谢谢!
我正在尝试将 Python 实用程序翻译成 Ruby。问题是对python不太了解。
该实用程序的一个片段包括以下if
条件:
if bits&0x10==0x10:
这意味着什么?位是一个变量。它是某种“缩短的”“&&”,意思是如果位非零且值为 0x10?谢谢!
唯一的&
就是按位和运算。即,bits
逐位与 0x10 进行比较,如果两者都有该位置的位,1
则结果1
为该位置,否则为 0。
基本上,由于 0x10 在二进制中是 10000,因此这是检查第 5 位bits
是否设置为1
.
我不太了解红宝石,但我的猜测是,它应该有一个按位和运算符,它可能&
也是如此。因此,这段特定的代码最终将在 ruby 中完全相同。
编辑:根据Ruby Operators页面。在“Ruby Bitwise Operators”部分下&
,在 ruby 中也可以用作按位运算符,因此您可以在实用程序的翻译中保持原样,它确实应该可以工作。
它实际上检查变量位的第 5 位是否已设置
这个怎么运作
& 是按位与。
0x10 是二进制值 0b10000 的十六进制
bits
所以你对曾经发生过的事情做一些明智的决定0b10000
此外,Ruby 支持类似的按位测试结构
if (bits&0x10)
......
end
请注意 Tim 提到的,您的 Python 构造可以简化为
if bits&0x10:
.......
& 是二进制位“与”运算符。
0x10 是十六进制的 10。
您可能想在此处阅读 python 文档