perl中的位选择

Posted

技术标签:

【中文标题】perl中的位选择【英文标题】:Bit selection in perl 【发布时间】:2019-08-09 11:37:05 【问题描述】:

我们如何在 perl 代码中位选择变量?

我是 perl 新手,我有一个场景,我需要从文件中提取特定格式并将输入提供给另一个模块进行分析。

目前我已经提取了所需的 16 位十六进制模式。 现在从这个 16bits 十六进制格式,我只想要 LSB 10bits。 请参考以下示例(这是一个示例代码,我只使用了我的要求的 1 行)

use strict;
my $string = "HDR 0c0d PlD 1000 GAP 412";
$string =~ s/.*HDR\s(\S+).*/$1/g;
print "$string\n";
my $hex = hex($string);
print "$hex"; 

$hex 的输出是 3095,即 16bit 16’b0011000010000101 现在我只需要提取 LSB 10bits(0010000101),请告诉我一些简单的方法来做到这一点。

【问题讨论】:

【参考方案1】:

使用位掩码选择您需要的位。要选择正确的 10 位,您可以使用:

my $x = 0xfff0;
print $x & 0x3ff;

输出是

1008

0xfff0 十位的十进制数

【讨论】:

谢谢@oklas,你的逻辑有帮助! 欢迎您!不要忘记标记答案已解决。并投票选出您喜欢的答案,使其他人可见。 (累积对您的 q/a 的一些投票后,您将可以投票)

以上是关于perl中的位选择的主要内容,如果未能解决你的问题,请参考以下文章

C语言中的位运算符!

perl 中的 HTML 解析

C语言中的位段操作—嵌入式学习(实习篇)

python中的变量作用域(对于来自perl的人)

Perl 词法范围变量在声明中的效率

如何检查 Perl 中的 DBI 查询是不是返回了多个记录?