我正在编写一个协议(protocol)的 perl 实现,其规范是针对 C/C++ 给出的,但我不太了解 C。
条件 if ((flags & 0x400) != 0)
是什么意思?我如何在 perl 中做到这一点?
if ($flags == "\x400")
是否正确?
最佳答案
&
是按位与。参见 Bitwise operators .
因此 flags
被视为一系列位,然后您将它与具有您要检查的位集的内容进行 AND 运算。如果结果非零,则该位已设置,否则您正在查看的位未设置。特别是,在您的示例中,0x400 = 0100 0000 0000
用于检查 flags
中的第 11 位是否设置(为 1)。
通常,您不会使用 0x400
,而是使用命名常量,因此该位代表什么很清楚。
所以 if ($flags == "\x400")
不正确。参见 Working with bits in Perl .
可以在 Linux file permissions 中看到一个常见的位掩码示例.
关于c++ - '&' 在 C/C++ 中的作用是什么?它在 perl 中的等效运算符是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7104342/