echo intval(chr(255));
我不明白......
答案 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