为什么它是0而不是255?

时间:2010-07-22 07:34:45

标签: php

echo intval(chr(255));

我不明白......

5 个答案:

答案 0 :(得分:10)

chr()函数将一个字节转换为ASCII等效函数,intval()函数获取变量的整数值。

如果我们要将声明分成两行,那就是:

$a = chr(255); // $a is now a string
echo intval($a);

如果您查看intval()的文档,您会注意到:

  

字符串很可能会返回0   虽然这取决于最左边的   字符串的字符。常见的   整数铸造规则适用。

这就是结果为零的原因。

答案 1 :(得分:7)

字节0xFF不代表intval正在寻找的八进制,十进制或十六进制数字。你可能想要ord function

答案 2 :(得分:1)

要输出255,您需要:

echo intval(ord(chr(255)));

ASCII中有128个序号,其中255个为ÿ,因此当您将其转换为intval的数字时,它将为0。

答案 3 :(得分:0)

因为chr传递一个字符串,在这种情况下只有一个字符,字符为0xFF,或者更好地称为ÿ

另一方面,

intval根据字符串的内容从字符串转换为整数,而不是字符。

  echo intval("33");        // will print 33
  echo intval("10", 8);     // will print 8
  echo intval("0xFF", 16);  // will print 255

  echo intval("m"); // will print zero...
                    //you can't convert letters like that to numbers.

答案 4 :(得分:0)

chr(255)

返回与ASCI 255

对应的字符

intval尝试从变量中引出整数部分

因为chr(255)返回一个非数字字符,所以intval得不到int值并返回0

相关问题