首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么按位不能处理复制/粘贴的字符串?

为什么按位不能处理复制/粘贴的字符串?
EN

Stack Overflow用户
提问于 2011-09-28 08:55:54
回答 3查看 97关注 0票数 2

简单到可以测试:

代码语言:javascript
复制
echo(~~"Hello World"); //Echos Hello World
echo(~"Hello World"); //Echos �����ߨ����
echo(~"�����ߨ����"); //Echos @B@B@B@B@B W@B@B@B@B

为什么它可以直接在两个not的顶部正常工作,但不能用于复制和粘贴的字符串输出?

我猜可能有一些数据在某个地方丢失了,但是我如何才能以这样的方式输出数据,如果我将其复制并粘贴到代码中,而代码发现它不是按位计算的,那么它将实际工作呢?

这已经困扰了我和其他一些我认识的人很长一段时间了!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-09-28 09:00:57

这是因为您看到的char包含无效的(不存在的)代码。

例如,H代码是72~72-73

只要它不是有效的字符,并且不能显示-它显示为一个带问号的正方形。因此,它不能被翻译回来,因为你不能用code -73复制char (或者更准确地说,你的记事本或操作系统不能做到这一点)

票数 2
EN

Stack Overflow用户

发布于 2011-09-28 09:08:06

Ascii H是0100 1000或字符72,~H是1011 0111或字符183。这超出了基本的Ascii表128。

由于PHP没有规定字符串的特定编码,因此生成的字符将取决于脚本的代码页。

这可能是不可打印的字符(因此用�表示),当您复制/粘贴时,符号�将简单地替换它。

有关将字符串实现为字节数组的更多详细信息,请参阅Php Strings

票数 1
EN

Stack Overflow用户

发布于 2011-09-28 09:12:51

如前所述,问题在于您试图回显的字符是不可打印的。您可以检查此脚本的各个步骤中发生了什么,以了解如果确实需要存储此脚本并在以后检索它,您可以执行哪些操作。

代码语言:javascript
复制
$a = "Hello World";

$b = ~$a;

$chars = unpack("c11chars", $b);
foreach ($chars as $char) {
    echo $char . ' = ' ;
    echo chr($char) . "\n";
}

$out = '';
foreach ($chars as $char) {
        $out .= pack("c", $char);
}
echo ~$out;

输出:

代码语言:javascript
复制
-73 = ?
-102 = ?
-109 = ?
-109 = ?
-112 = ?
-33 = ?
-88 = ?
-112 = ?
-115 = ?
-109 = ?
-101 = ?
Hello World

?是我的回声,因为它们是不可打印的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7577233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档