php将utf8格式转为hex,如何让一段数据转为hex形式

是酱紫的,上图

这是一个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

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

先把一个事情弄清楚

图中右侧的 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

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值