Perl 在执行逐位操作之前,是否需要打包/解包从二进制文件读取的数据?

Perl 在执行逐位操作之前,是否需要打包/解包从二进制文件读取的数据?,perl,Perl,我已将二进制文件中的两个字节读入$data,现在需要执行按位and运算 但当我这么做的时候 if (($data & "\x100") != 0) { 我得到错误参数“@\0”在数值ne(!=)中不是数值 我应该先转换$data吗?为什么要使用字符串进行二进制操作 使用($data&0x100)!=0,如果需要,将$data转换为数字。为什么要使用字符串进行二进制操作 使用($data&0x100)!=0,如有必要,将$data转换为数字。是的,如果有两个文本字节应解释为16位数字,则

我已将二进制文件中的两个字节读入$data,现在需要执行按位and运算

但当我这么做的时候

if (($data & "\x100") != 0) {
我得到错误参数“@\0”在数值ne(!=)中不是数值


我应该先转换$data吗?

为什么要使用字符串进行二进制操作


使用
($data&0x100)!=0
,如果需要,将
$data
转换为数字。

为什么要使用字符串进行二进制操作


使用
($data&0x100)!=0
,如有必要,将
$data
转换为数字。

是的,如果有两个文本字节应解释为16位数字,则需要将其解包


除此之外,还有ThiefMaster所说的。

是的,如果您有两个文本字节,应该解释为16位数字,则需要将其解包


最重要的是,盗贼大师说的话没有用。怎么办?你能告诉我们你试过什么吗
perl-le'print unpack(“H*”,“\x01\xFF”)”
做了我所期望的。我做了$flags=unpack'H*,$data),但是当我尝试按位执行时,它说参数“c280”不是按位的数字,(&)如何工作?你能告诉我们你试过什么吗
perl-le'print unpack(“H*”,“\x01\xFF”)”
达到了我的预期效果。我做了$flags=unpack'H*,$data),但当我尝试按位and时,它说参数“c280”不是按位and(&)的数字