是酱紫的,上图
这是一个blob里的数据,我现在用stream_get_contents把他取出来之后直接变成图中右侧ascii形式了,但是协议里不是按ascii搞的。请问怎么取或者怎么能转换成一段hex形式的字符串?
先把一个事情弄清楚
图中右侧的 ASCII 形式和中部的 HEX 形式都是同一个东西(我们称作二进制串)
这两种表示方式都不用于实际的数据通讯中,通讯时依然使用的是二进制串
$s = 'ABCDEFGHIJKLMNOP';echo strtoupper(join(' ', str_split(bin2hex($s), 4)));4142 4344 4546 4748 494A 4B4C 4D4E 4F50
我感觉是取值用的函数不对,但是经验又太少。用什么能把原数据原封不动的搞成字符串呢
先把一个事情弄清楚
图中右侧的 ASCII 形式和中部的 HEX 形式都是同一个东西(我们称作二进制串)
这两种表示方式都不用于实际的数据通讯中,通讯时依然使用的是二进制串
$s = 'ABCDEFGHIJKLMNOP';echo strtoupper(join(' ', str_split(bin2hex($s), 4)));4142 4344 4546 4748 494A 4B4C 4D4E 4F50
先把一个事情弄清楚
图中右侧的 ASCII 形式和中部的 HEX 形式都是同一个东西(我们称作二进制串)
这两种表示方式都不用于实际的数据通讯中,通讯时依然使用的是二进制串
$s = 'ABCDEFGHIJKLMNOP';echo strtoupper(join(' ', str_split(bin2hex($s), 4)));4142 4344 4546 4748 494A 4B4C 4D4E 4F50 谢谢斑竹 已经解决了 我真2
十六进制(HEX)表示 只是为了描述上的直观
如果一个字符串的十六进制表示是 DD07
那么在 php 中就可写作
$s = chr(0xdd) . chr(0x07);
echo ord($s{0}; //221
echo ord($s{1}; //7