对于包含数字十六进制的字符串,按位移位。在perl

时间:2014-11-25 10:02:18

标签: perl hex

我有一个字符串

$string = "0x0"

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

$C = $string <<4 ;

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

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

有人可以帮忙执行此操作吗?

2 个答案:

答案 0 :(得分:3)

这是因为“0x0”不是数字。这是一个字符串。你必须把它变成一个数值。

 use strict;
 use warnings;

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

答案 1 :(得分:0)

如上所述,您必须将其转换为数字值,然后使用sprintf返回十六进制值。

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