如何以十六进制显示字符串

如何以十六进制显示字符串

貌似是一个很简单的问题,
但就是不知道怎么搞
如:
$temp="\xAB\xCD\xEF";#一个二进制串

如何打印出$temp,像这样:
\xAB\xCD\xEF


[Copy to clipboard] [ - ]
CODE:
my $temp = '\XAB';
print $temp,"\n";

题目看的有点晕乎.....
#!/usr/bin/perl -w
my $temp="\xAB\xCD\xEF";
$temp=spritf("%x",$temp);
print"$temp\n";

是不是这样?把它强制用16进制表示?
二楼你用了单引号我也知道,但实际环境中$temp是一个二进制串,所以你的技巧不行……
3楼你的结果是0
printf
我刚才也测试过
#!/usr/bin/perl -w
my $temp="0b11111111";#255
$temp=sprintf("%x",$temp);
print"$temp\n";

它显示是:Argument "0b11111111" isn't numeric in sprintf at ./test1.pl line 3.
这明显它没有将0b11111111当做2进制数来处理,所以现在结果为0;

但是如果我这么写就能显示
#!/usr/bin/perl -w
#my $temp="0b11111111";#255
$temp=sprintf("%x",0b11111111);
print"$temp\n";

这样的话显示结果为 ff;
所以现在问题关键转移到如何把二进制数赋给变量,并让它知道这是个2进制数!

本人不才,希望前辈给些指点;
顶个!
谁能帮忙解答一下,
如何给一个变量赋上一个2进制变量?如
#!/usr/bin/perl -w
my $temp="0b11111111";#255
$temp=sprintf("%x",$temp);
print"$temp\n";

它显示是:Argument "0b11111111" isn't numeric in sprintf at ./test1.pl line 3.

这就提示系统并没有将$temp当做一个2进制数处理,谁帮解答一下?
是不是要encode 这些的。
OK 解决了!
#!/usr/bin/perl -w
my $temp=0b11111111;#255
$temp=sprintf("%x",$temp);
print"$temp\n";

原来在把2进制数赋值给变量时,不要加上双引号或单引号,具体原因要查一下,但是这样就能显示结果为:ff
yingweixu
这位大哥,你只是把一个数(如255)以16进制显示而已,
而我是一个很长的二进制串,如读入二进制文件的一行,
即每个字节以16进制显示……