在PHP开发中大都是操作字符类数据,极为方便,但操作二进制又如何呢,下面代码举例看看。

函数:  pack(format,args+)

pack()和unpack()函数的第一个参数表如下

Bash
a:NULL填充的字节串
A:空格填充的字节串
h:十六进制数,低四位字节优先
H:十六进制数,高四位字节优先
c:有符号字符
C:无符号字符
s:有符号短整型(总是16位,机器字节序)
S:无符号短整型(总是16位,机器字节序)
n:无符号短整型(总是16位,大尾字节序)
v:无符号短整型(总是16位,小尾字节序)
I:有符号整型(机器相关大小和字节序)
I:无符号整型(机器相关大小和字节序)
l:有符号长整型(总是32位,机器字节序)
L:无符号长整型(总是32位,机器字节序)
N:无符号长整型(总是32位,大尾字节序)
V:无符号长整型(总是32位,小尾字节序)
f:浮点数(机器相关大小和表示)
d:双精度数(机器相关大小和表示)
x:空字节
X:倒退一个字节
@:用NULL填充绝对位置

例1:

PHP
<?php
echo pack("C3",80,72,80);
?>

结果:

Bash
PHP

例2:

PHP
<?php
echo pack("C*",80,72,80);
?>

结果:

Bash
PHP

参考1:  http://blog.csdn.net/mypcstyle/article/details/37510585

参考2:  http://www.w3school.com.cn/php/func_misc_pack.asp

PHP操作二进制字节数据的更多相关文章

  1. C# 串口操作系列(3) -- 协议篇,二进制协议数据解析

    原文地址:http://blog.csdn.net/wuyazhe/article/details/5627253 我们的串口程序,除了通用的,进行串口监听收发的简单工具,大多都和下位机有关,这就需要 ...

  2. [oracle] Oracle存储过程里操作BLOB的字节数据的办法,例如写入32位整数

    作者: zyl910 一.缘由 BLOB是指二进制大对象,也就是英文Binary Large Object的缩写. 在很多时候,我们是通过其他编程语言(如Java)访问BLOB的字节数据,进行字节级的 ...

  3. C#二进制字节数组操作功能 拦截字节数组SubByte

    C#二进制字节数组操作功能 拦截字节数组SubByte /// <summary> /// 截取字节数组 /// </summary> /// <param name=& ...

  4. 第三十四节,pickle数据类型转换二进制字节码模块

    在使用pickle模块时需要先 import pickle 引入模块 pickle.dumps()模块函数 功能:将python各种类型的数据转换成计算机识别的二进制字节码[有参] 使用方法:pick ...

  5. 深入Node模块Buffer-学会操作二进制

    Buffer 作为 nodejs 中重要的概念和功能,为开发者提供了操作二进制的能力.本文记录了几个问题,来加深对 Buffer 的理解和使用: 认识缓冲器 如何申请堆外内存 如何计算字节长度 如何计 ...

  6. 【实验向】问题:假设计算机A和计算机B通信,计算机A给计算机B发送一串16个字节的二进制字节串,以数组形式表示:

    问题: 假设计算机A和计算机B通信,计算机A给计算机B发送一串16个字节的二进制字节串,以数组形式表示: unsigned char[16] = {0x3f, 0xa0, 0x00, 0x00, 0x ...

  7. JAVASE02-Unit07: 基本IO操作 、 文本数据IO操作

    基本IO操作 . 文本数据IO操作 java标准IO(input/output)操作 package day07; import java.io.FileOutputStream; import ja ...

  8. 转:WCF传送二进制流数据基本实现步骤详解

    来自:http://developer.51cto.com/art/201002/185444.htm WCF传送二进制流数据基本实现步骤详解 2010-02-26 16:10 佚名 CSDN   W ...

  9. mysql-connector-python取二进制字节时报错UnicodeDecodeError:'utf-8' codec can't decode byte 0xb0 in position 0

    在储存用户密码时,我使用了hmac算法对用户密码加密,加密出来的hash值是一个二进制字节串,我把这个字节串存到mysql的password字段,password字段的数据类型是varbinary. ...

随机推荐

  1. Python并发复习3 - 多进程模块 multiprocessing

    python中的多线程其实并不是真正的多线程,如果想要充分地使用多核CPU的资源,在python中大部分情况需要使用多进程.Python提供了非常好用的多进程包multiprocessing,只需要定 ...

  2. asp.net core自定义模型验证——前端验证

    转载请注明出处:http://www.cnblogs.com/zhiyong-ITNote/ 官方网站:https://docs.microsoft.com/zh-cn/aspnet/core/mvc ...

  3. python基础一 ------可迭代对象和迭代器对象

    可迭代对象和迭代器对象:前者生成后者 比喻:10个硬币都可以一一数(迭代),放入到存钱罐(可以取钱的那种),那这个存钱罐就是一个迭代器对象 需求:从网络抓取各个城市气温信息,并依次显示若依次抓取较多的 ...

  4. Lock锁与Condition监视器(生产者与消费者)。

    /*生产者与消费者第二次敲,本人表示很郁闷,以后要经常读这个 * Condition 将Object类中的监视器(wait notify notifyAll)分解成不同的对象.例如condition_ ...

  5. js数组根据指定字段(true or false)排序

    const obj = [ {name:'1',bind:true}, {name:'2',bind:false}, {name:'3',bind:true}, {name:'4',bind:fals ...

  6. IDEA 配置datasource,提升编码效率,让你在 Mapper.xml 中编写sql可以飞起来~

    IDEA 2018 创建springboot工程后,如果你打开一个.sql文件,或者一个mybatis的mapper.xml文件,会提示: No data source are configured ...

  7. BZOJ4167 : 永远的竹笋采摘

    首先枚举出所有可能成为区间最小差值的点对$(j,i)$. 枚举每个位置作为右端点$i$,假设$a[j]>a[i]$. 找到第一个这样的$j$,那么可以将下一个$a[j]$的范围缩小到$(a[i] ...

  8. bzoj3255 一个关于序列的游戏

    题意是啥 给你一个数列,可以任意删去一段,记其长度为$s$,得到$val_s$的价值,问你最大价值和为多少.. 其中这一段数要满足成一个上凸且相邻数差为$1$ 显然,删掉一段数后剩下的左右会相邻.. ...

  9. python系统编程(五)

    多线程-threading python的thread模块是比较底层的模块,python的threading模块是对thread做了一些包装的,可以更加方便的被使用 1. 使用threading模块 ...

  10. 编程菜鸟的日记-初学尝试编程-寻找2到n之间的素数并输出

    //输入一个整数n,输出2到n之间的具体素数值 #include <iostream> #include <algorithm> #include <cmath> ...