是否可以对PHP中的字符进行bithift操作

时间:2015-07-09 17:28:19

标签: php char bit-manipulation

在这样的代码中:

<?php

$a = 'абв';

for($i = 0; $i < strlen($a); $i++)
{
        echo $a[$i]>>6, ' ';
}

输出为0 0 0 0 0 0,这不是预期的结果。预期输出值为3和2,具体取决于我们是在UTF-8字符的开头还是结尾。

什么问题?

1 个答案:

答案 0 :(得分:2)

尽管PHP提供了许多功能,这些功能只是C对应的简单包装,但开发人员决定为位移运算符添加额外的检查。在PHP中,shift-left和shift-right总是返回0(甚至不是假,这有点意义)。

为了对一个字符进行位移,有必要用ord函数包装它:

<?php

$a = 'абв';

for($i = 0; $i < strlen($a); $i++)
{
        echo ord($a[$i])>>6, ' ';
}

这会产生:3 2 3 2 3 2正如所料。