<% a = &H67452301 
    b = &HEFCDAB89 
    c = &H98BADCFE 
    d = &H10325476 
response.write a&" <br>"&b&" <br>"&c&" <br>"&d& %>结果输出: 
1732584193 
-271733879 
-1732584194 
271733878 <?         $a=0x67452301; 
        $b=0xEFCDAB89; 
        $c=0x98BADCFE; 
        $d=0x10325476; 
echo $a." <br>".$b." <br>".$c." <br>".$d; ?>结果输出: 
1732584193 
4023233417 
2562383102 
271733878 请高手解答一下为何有这样的差异?同样都是16进制,结果ASP输出了负数,php却是正数 

解决方案 »

  1.   

    asp是作为int处理的
    php是作为unsigned int处理的
    ==========================================================

    欢迎加入以google wave为交流工具的PHP讨论组: [email protected] 
    加入办法: <br/>
    1。 从你的gmail可以直接发信到 [email protected] <br/>
    2。 PM你的邮箱给我,我直接加入 <br/>
    3。 到http://groups.google.com/group/phpwave/subscribe?note=1申请 <br/>
      如果该网址不能访问请尝试 https://groups.google.com/group/phpwave/subscribe?note=1 <br/>
          或 http://groups.google.co.uk/group/phpwave/subscribe?note=1 ...(或换其它国家域名) <br/>
      

  2.   

    php将正整数溢出为浮点数,你用var_dump一下就知道了,$b是float型。
      

  3.   

    如果你强制转换$b=intval($b),这时你再var_dump下,就是int(-271733879),与asp里面的一样了。
      

  4.   

    嗯,楼上说得准确
    ========================================================== 
    欢迎加入以google wave为交流工具的PHP讨论组: [email protected] 加入办法: <br/> 1。 从你的gmail可以直接发信到 [email protected] <br/> 2。 PM你的邮箱给我,我直接加入 <br/> 3。 到http://groups.google.com/group/phpwave/subscribe?note=1申请 <br/> 如果该网址不能访问请尝试 https://groups.google.com/group/phpwave/subscribe?note=1 <br/> 或 http://groups.google.co.uk/group/phpwave/subscribe?note=1 ...(或换其它国家域名) <br/>