【问题标题】:Is it possible to do bitshift operations on a character in PHP是否可以对 PHP 中的字符进行移位操作
【发布时间】:2015-07-09 17:28:19
【问题描述】:

在这样的代码中:

<?php

$a = 'абв';

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

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

有什么问题?

【问题讨论】:

    标签: php char bit-manipulation


    【解决方案1】:

    尽管 PHP 提供了许多函数,它们只是对 C 对应物的简单包装,但开发人员决定为位移运算符添加额外的检查。在 PHP 中 shift-left 和 shift-right 总是返回 0(甚至不是 false,这会有些道理)。

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

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

    这会按预期生成:3 2 3 2 3 2

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-26
      • 2019-10-20
      • 1970-01-01
      相关资源
      最近更新 更多