Home > Backend Development > PHP Tutorial > 如何让一段数据转为hex形式

如何让一段数据转为hex形式

WBOY
Release: 2016-06-23 13:52:56
Original
1191 people have browsed it

是酱紫的,上图

这是一个blob里的数据,我现在用stream_get_contents把他取出来之后直接变成图中右侧ascii形式了,但是协议里不是按ascii搞的。请问怎么取或者怎么能转换成一段hex形式的字符串?


回复讨论(解决方案)

先把一个事情弄清楚
图中右侧的 ASCII 形式和中部的 HEX 形式都是同一个东西(我们称作二进制串)
这两种表示方式都不用于实际的数据通讯中,通讯时依然使用的是二进制串

$s = 'ABCDEFGHIJKLMNOP';echo strtoupper(join(' ', str_split(bin2hex($s), 4)));
Copy after login
Copy after login
Copy after login
4142 4344 4546 4748 494A 4B4C 4D4E 4F50

我感觉是取值用的函数不对,但是经验又太少。用什么能把原数据原封不动的搞成字符串呢

先把一个事情弄清楚
图中右侧的 ASCII 形式和中部的 HEX 形式都是同一个东西(我们称作二进制串)
这两种表示方式都不用于实际的数据通讯中,通讯时依然使用的是二进制串

$s = 'ABCDEFGHIJKLMNOP';echo strtoupper(join(' ', str_split(bin2hex($s), 4)));
Copy after login
Copy after login
Copy after login
4142 4344 4546 4748 494A 4B4C 4D4E 4F50


斑竹大大可来了~~~我现在是这样理解的,我们协议里是按照hex一段一段来解数据嘛,比如第二行DD07,转为十进制后是221和7,之后通过协议规定221+7*256=2013。但是现在我把这段字符取出来直接变成ascii形式了,协议就不灵了,我的问题就在于此,怎么让我取出来的还是hex形式?

先把一个事情弄清楚
图中右侧的 ASCII 形式和中部的 HEX 形式都是同一个东西(我们称作二进制串)
这两种表示方式都不用于实际的数据通讯中,通讯时依然使用的是二进制串

$s = 'ABCDEFGHIJKLMNOP';echo strtoupper(join(' ', str_split(bin2hex($s), 4)));
Copy after login
Copy after login
Copy after login
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

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template