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

我这只是给出一个例子!你可以按照这种方式去做,当然也只是一个建议而已,或许有更好的办法!
你可以配合foreach(split){}去实现,但是我觉得这种办法是不是太麻烦了!看看有没有其他更好的办法!
本人不才,刚学不久。问问其他前辈可否有函数进行转换?
我来综合解决一下
print sprintf("%x ",$temp); 是没错的
请注意sprintf的函数原型
sprintf FORMAT, LIST
其第二个参数是LIST,所以给他一个字符数组就好了
my $i = -16;
binmode(STDIN);
my $data; $|++;
printf "%07x ". ("%02x%02x "x8)."\n", $i+=16, map ord, split//,$data
while read STDIN, $data, 16;


说明一下,这不是我写的
免得有明眼人说我 剽窃

还是我自己来吧:
$temp="\xAB\xCD\xEF";
@byte=($temp=~/.{1}/sg);
map printf("0x%x",ord), @byte;
搞定!

呵呵,13楼的好复杂啊!前面几位朋友ord()是必须的,因为perl里字符和数是两马事,不像C语言……

用 pack/unpack
再不要 split 正则表达式了。

你们滥用正则表达式,让我感到很痛心。
除了正则表达式就什么也不会了?什么也不想学了?
$temp="\xAB\xCD\xEF";
@num=unpack("C3",$temp);
map printf("0x%x",$_), @num;
真的可以……晕,怎么不早说


QUOTE:
原帖由 wellfroggy 于 2008-8-15 20:02 发表
$temp="\xAB\xCD\xEF";
@num=unpack("C3",$temp);
map printf("0x%x",$_), @num;
真的可以……晕,怎么不早说

你怎么又 printf %x 了呀?你这样不彻底呀!

print unpack 'H*', $temp;
ding



QUOTE:
原帖由 flw 于 2008-8-15 19:40 发表
用 pack/unpack
再不要 split 正则表达式了。

你们滥用正则表达式,让我感到很痛心。
除了正则表达式就什么也不会了?什么也不想学了?

就是等斑竹发言了.....
我相信有更便捷方式
虽然你很臭屁
但是~~
你真的很牛!
佩服...