包含数字十六进制的字符串的按位移位.在 Perl 中



我有一个字符串

$string = "0x0"

现在我想基本上将此字符串用作数字并进行按位移位,即我的目标是

$C = $string <<4 ;

但是当我这样做时,它说:

Argument "0x0" isn't numeric in left bitshift (<<)

有人可以帮忙执行吗?

这是因为"0x0"不是数字。这是一个字符串。您必须将其转换为数值。

 use strict;
 use warnings;
 my $string = "0x0";
 my $number = hex($string);
 my $C = $number <<4 ;
 print $C;

如前所述,您必须将其转换为数值并使用sprintf切换回十六进制值。

sprintf ("0x%x" , hex($string) << 4);

最新更新