print hex("0x30"); 给出正确的十六进制到十进制转换.
什么
print hex(0x30);意思?它给出的价值是72.
mar*_*cog 13
hex() 接受一个字符串参数,所以由于Perl的弱类型,无论你传递什么,它都会将参数读作字符串.
前者0x30作为字符串传递,hex()然后直接转换为十进制.
后者是一个十六进制数0x30,它是十进制的48,传递给hex()它再次被解释为十六进制并转换为十进制数72.把它想象成做hex(hex("0x30")).
你应该坚持下去hex("0x30").
$ perl -e 'print 0x30';
48
$ perl -e 'print hex(0x30)';
72
$ perl -e 'print hex(30)';
48
$ perl -e 'print hex("0x30")';
48
$ perl -e 'print hex(hex(30))';
72
Run Code Online (Sandbox Code Playgroud)