php - PHP中是否可以对字符进行位移操作

标签 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 字符的开头还是结尾。

有什么问题吗?

最佳答案

尽管 PHP 提供的许多函数只是 C 对应函数的简单包装,但开发人员决定为位移运算符添加额外的检查。在 PHP 中,左移和右移总是返回 0(甚至不是 false,这会有意义)。

为了对字符进行位移位,需要使用 ord 函数将其包装起来:

<?php

$a = 'абв';

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

这会产生:3 2 3 2 3 2 正如预期的那样。

关于php - PHP中是否可以对字符进行位移操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31324361/

相关文章:

php - 是否可以使用 imagettftext 和 imagecolortransparent 获得真正的透明度?

php - 在 jQuery datepicker 中更改与 MySQL 格式相同的日期格式

c - char 是否保证恰好是 8 位长?

linux - 如何在 xargs 中返回字符串的长度(特殊字符)

java - 如何知道 boolean 值是否根本没有被设置(或取消设置)?

algorithm - 给定数组的每个子集的最大和最小元素的按位或之和

php - 从准备好的语句函数返回变量 PHP

php - 从 scandir() 隐藏 .DS_store

SQL查询字符串中的回车符并最终删除回车符

c - '<<' 在 C 中是什么意思?