php 打包 二进制数据,php将数据打包成二进制pack及解包unpack

本文详细介绍了PHP中用于打包和解包二进制数据的pack和unpack函数,讨论了它们在数据通信、加密和节省空间等方面的应用。通过实例展示了如何使用这两个函数进行数据转换,并解释了相关参数如'a', 'C', 'H', 'I'等的含义和使用场景。此外,还提到了ord和chr函数在处理ASCII编码和字符转换中的作用。" 108303326,8259546,无根树优化与路径修改操作,"['数据结构', '图论', '算法', '比赛编程', '树形结构']
摘要由CSDN通过智能技术生成

hp将数据打包成二进制pack及解包unpack

最小单位为字节,即8位,虽说是打包成二进制,但是一般以十六进制来表示,两个十六进制表示一字节,如:0x12, 0x2a,注意,我们是无法通过编辑器来输入十六进制的,我们的输入0x12,对应的是四个字符,占用四个字节,意义是不一样的。当我们打开一段数据,计算机是要利用内存中的一个或多个字节去匹配ASCII或者unicode等字符集来显示内容的,所以我们可以使用ASCII和unicode来重新组装数据,混淆显示,起到加密的效果,当然,由于能操作的最小单位为字节,而ASCII字符集都是一个字节以内的,所以单个字符的显示操作不了。而数值型的变化则比较大。

还有就是,一个变量的显示和其实际的存储的内容不是一样的。比如,字符串ab,在内存中占两个连续的字节<0x61><0x62>,现在在ab中加入

一个NUL字符,即<0x61><0x00><0x62>,实际的显示还是ab,但是传输给其他地方并不是ab。

打包成二进制的好处:

数据通信(通过二进制格式与其它语言通信)

数据加密(如果不告诉第三方你的打包方式,对方解包的难度就相对很大)

节省空间(比如比较大的数字按字符串储存会浪费很多空间,打包成二进制格式才需要4位<32位数字>)

相关函数

pack() , unpack() , ord()

pack( string $format [, mixed $args [, mixed $... ]] )

将数据打包成二进制字符串。

有符号值和无符号值之间的区别只影响函数unpack(), 在那些使用有符号和无符号格式代码的地方pack()函数产生相同的结果。

如果你提供的参数比 $format 要求的少,pack 假设缺的都是空值。如果你提供的参数比 $format 要求的多,那么多余的参数被忽略。

返回值 string

unpack($format, $data)

解开二进制包,format 里面读取的长度应小于 data的长度,否则会报错。

返回值为array

如果format

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值