2015年6月15日 星期一

Perl 特殊字元和8進位/16進位表示方法

$x = 0377; # 以「0」開頭是 8 進位表示法,因此 0377 代表十進位的 255 
$y = 0xfe; # 以「0x」開頭是 16 進位表示法,因此 0xfe 代表十進位的 254

 $x / $y 是數字,但是一旦用以下方式,就成為ASCII/UTF-8 的字串:


$x = chr(0xfe);
$y = "\xfe";
以上等價

$x = chr(0xFEFF);
$y = "\x{FEFF}"; #數字太大,要用{}標示
以上等價

這些字串也可以用 pack("ccc",...),見以下範例:
[root@EIP-API-AP erp]# perl
print "0x64\n";
print "\x64\n";
print chr(0x64)."\n";
print pack("C",0x64)."\n";
__END__
0x64
d
d
d

結論:"\x64" 等價 chr(0x64) 等價 pack("C",0x64) 但 不等價 0x64

沒有留言:

張貼留言