我有一个字符串
$string = "0x0"
现在我想基本上将这个字符串用作数字并进行按位移位,即我的目标是
$C = $string <<4 ;
但是,当我这样做时,它说:
Argument "0x0" isn't numeric in left bitshift (<<)
有人可以帮忙执行此操作吗?
答案 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);