gpt4 book ai didi

php - 无法连接 x 代码 (\x) - PHP

转载 作者:可可西里 更新时间:2023-10-31 23:28:20 27 4
gpt4 key购买 nike

我想使用 unpack()。

这个有效:

$srbytes = "\x80\x3e\x00\x00";

$array1 = unpack("v",$srbytes);

这不是:

$num1 = "80"

$srbytes = "\x".$num1."\x3e\x00\x00";

$array1 = unpack("v",$srbytes);

$srbytes = "\x"."80\x3e\x00\x00"; 
$array1 = unpack("v",$srbytes);

用 echo 打印这个显示第一个完整字符串的 ASCII 字符,但连接的字符显示文本,直到它通过连接的地方。

将完整字符串与串联字符串进行比较显示错误,即使它们应该相同?

当我尝试连接时实际发生了什么

最佳答案

字符扩展将不起作用,因为此时您执行了 "\x"。 "80" PHP 已经有两个字符串文字。不能指望它意味着 这意味着什么。

与其尝试连接十六进制值以进行扩展,不如连接实际字符,方法是将十六进制值转换为 base10 整数,并将其传递给 chr() ,将其转换为实际字节。

$str = "";
$num1 = "80";
$str .= chr(base_convert($num1, 16, 10));
var_dump($str);

给你

string(1) "�"

当您实际查看示例中 $srbytes 的值时,您将其定义为字符串文字 "\x80\x3e\x00\x00",什么你得到的是 var_dump("\x80\x3e\x00\x00") 给你 string(4) "�>",因为 PHP double quoted strings offer additional character expansion例如将转义的十六进制值扩展为字节。然而,var_dump("\x"."80\x3e\x00\x00") 只是给你 string(7) "\x80>",这是因为value "\x" 本身只是作为字符串的文字 "\x"。所以它们不是相同的值,不。

关于php - 无法连接 x 代码 (\x) - PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39475279/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com