PHP处理二进制数据的实现方法

PHP处理二进制数据需要用到pack()和unpack()。

pack()用来将数据转成二进制数据,使用方法如下:

pack(“LL”, 0,1);

pack(“C”, a);

unpack()可以将二进制数据解析成关系数组,它接受2个参数,使用方法如下:

$arr = unpack(“Chead”, $binstream);   //读取第1个字节

$arr = unpack(“Chead/C3string/C4number”, $binstream);  //读取8个字节,用斜杠可以分隔

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

■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填充绝对位置

以上这篇PHP处理二进制数据的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • C语言二进制思想以及数据的存储

    我们平时使用的数字都是由 0~9 共十个数字组成的,例如 1.9.10.297.952 等,一个数字最多能表示九,如果要表示十. 十一.二十九.一百等,就需要多个数字组合起来. 例如表示 5+8 的结果,一个数字不够,只能"进位",用 13 来表示:这时"进一位"相当于十,"进两位"相当于二十. 因为逢十进一,也因为只有 0~9 共十个数字,所以叫做十进制(Decimalism). 进制也就是进位制.在进行加法(减法)运算时,逢X进(借)一就是X

  • C++实现string存取二进制数据的方法

    本文实例讲述了C++实现string存取二进制数据的方法,分享给大家供大家参考.具体方法分析如下: 一般来说,STL的string很强大,用起来也感觉很舒服,这段时间在代码中涉及到了用string存取二进制数据的问题,这里记录一下,以供以后参考. 首先提一下STL中string的参考资料:http://www.cplusplus.com/reference/string/string/ ,不懂的朋友可以看下. 在数据传输中,二进制数据的buffer一般用系统预设的大数组进行存储,而不是STL的s

  • C语言十进制转二进制代码实例

    用C语言实现将十进制转化为二进制,并统计转换后的二进制码中1的个数. #include <stdio.h> int binaryNum[16]; //存放转换后得到的二进制码 int count=0; //计数十进制整数被2除的次数 int oneCount=0; //得到的二进制码中1的个数 void main(){ int num; printf("输入一个十进制的整数:"); scanf("%d",&num); while( (num/2)

  • Java基于TCP方式的二进制文件传输

    一个基于Java Socket协议之上文件传输的完整示例,基于TCP通信完成. 除了基于TCP的二进制文件传输,还演示了JAVA Swing的一些编程技巧,Demo程序 实现主要功能有以下几点: 1.基于Java Socket的二进制文件传输(包括图片,二进制文件,各种文档work,PDF) 2.SwingWorker集合JProgressBar显示实时传输/接受完成的百分比 3.其它一些Swing多线程编程技巧 首先来看一下整个Dome的Class之间的关系图: 下面按照上图来详细解释各个类的

  • C++ 十进制转换为二进制的实例代码

    题目内容:将十进制整数转换成二进制数. 输入描述:输入数据中含有不多于50个的整数n(-231<n<231). 输出描述:对于每个n,以11位的宽度右对齐输入n值,然后输出"-->",再然后输出二进制数.每个整数n的输出,独立占一行. 题目分析:将某个数从十进制转为二进制的具体方法是,该数对2取余,结果要么为1要么为0,此为该数对应二进制的末位:然后该数除以二,得到的商再次对2取余,结果为对应二进制的倒数第二位--以此类推,知道除以2的结果为0. 参考代码: 复制代码

  • 进制转换算法原理(二进制 八进制 十进制 十六进制)

    1.二进制数.八进制数.十六进制数转十进制数 有一个公式:二进制数.八进制数.十六进制数的各位数字分别乖以各自的基数的(N-1)次方,其和相加之和便是相应的十进制数.个位,N=1;十位,N=2...举例: 110B=1*2的2次方+1*2的1次方+0*2的0次方=0+4+2+0=6D 110Q=1*8的2次方+1*8的1次方+0*8的0次方=64+8+0=72D 110H=1*16的2次方+1*16的1次方+0*16的0次方=256+16+0=272D 2.十进制数转二进制数.八进制数.十六进制

  • C语言中网络地址与二进制数之间转换的函数小结

    C语言inet_ntoa()函数:将网络二进制的数字转换成网络地址 头文件: #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> 定义函数: char * inet_ntoa(struct in_addr in); 函数说明:inet_ntoa()用来将参数in 所指的网络二进制的数字转换成网络地址, 然后将指向此网络地址字符串的指针返回. 返回值:成功则返回字符串指针, 失败则返

  • c语言中十六进制转二进制显示的实现方法

    复制代码 代码如下: //====================================== //输出格式: hex2bin 5e. //得到: 0101 1110 //====================================== #include <stdio.h>#include <limits.h> char *bitstr(char *, void const *, size_t); int main(int argc, char **argv){

  • PHP处理二进制数据的实现方法

    PHP处理二进制数据需要用到pack()和unpack(). pack()用来将数据转成二进制数据,使用方法如下: pack("LL", 0,1); pack("C", a); unpack()可以将二进制数据解析成关系数组,它接受2个参数,使用方法如下: $arr = unpack("Chead", $binstream);   //读取第1个字节 $arr = unpack("Chead/C3string/C4number"

  • python处理二进制数据的方法

    本文实例讲述了python处理二进制数据的方法.分享给大家供大家参考.具体如下: #!/usr/env/env python #-*- coding: cp936 -*- ''''' add Head Infomation for pcm file ''' import sys import struct import os __author__ = 'bob_hu, hewitt924@gmail.com' __date__ = 'Dec 19,2011' __update__ = 'Dec

  • MSSQL 将截断字符串或二进制数据问题的解决方法

    地图数据存放在sqlserver 2008中,使用mapxtreme7 开发时,使用Feature.Update()方法时出错的提示包含"MSSQL 将截断字符串或二进制数据" 主要原因就是给某个字段赋值时,内容大于字段的长度或类型不符造成的 解决方法: 一个是修改数据库字段大小: 再一就是是加强数据强壮性,严格的输入判断. 防止添加的信息类型或者长度与数据库表中字段所对应的类型不符合.

  • C#解码base64编码二进制数据的方法

    本文实例讲述了C#解码base64编码二进制数据的方法.分享给大家供大家参考.具体如下: 通过在Convert类的静态方法Convert.FromBase64String,可以讲base64编码的字符串解码为等效的byte []数组. using System; static class MyModClass { public static byte[] Base64DecodeString(this string inputStr) { byte[] decodedByteArray = Co

  • C#对二进制数据进行base64编码的方法

    本文实例讲述了C#对二进制数据进行base64编码的方法.分享给大家供大家参考.具体实现方法如下: using System; using System.IO; static class MyModClass { public static string Base64EncodeBytes(this byte[] inBytes) { return (Convert.ToBase64String(inBytes)); } } 希望本文所述对大家的C#程序设计有所帮助.

  • 使用node.js中的Buffer类处理二进制数据的方法

    前言 在Node.js中,定义了一个Buffer类,该类用来创建一个专门存放二进制数据的缓存区.这篇文章就详细介绍了node.js中的Buffer类处理二进制数据的方法,下面话不多说,来看看详细的介绍. 创建Buffer对象 第一种:直接使用一个数组来初始化缓存区 var arr = [0,1,2] var buf = new Buffer(arr) console.log(buf) 执行效果: 第二种:直接使用一个字符串来初始化缓存区 var str = 'hello' var buf = n

  • JavaScript读写二进制数据的方法详解

    前言 二进制是计算技术中广泛采用的一种数制.二进制数据是用0和1两个数码来表示的数,如果想要在前端中处理音频和视频.那你必须要对二进制数据有很好地掌握和操作能力.下面话不多说了,来一起看看详细介绍的吧 类型化数组的出现 类型化数组是 HTML5 中引入的API,它能够让开发者使用 JavaScript 直接操作二进制数据.在类型化数组出现之前,我们是无法直接通过 JavaScript 操作二进制数据,通常都是操作 JavaScript 中的数据类型,由运行时转化成二进制.这就多了一个转化的过程,

  • java 二进制数据与16进制字符串相互转化方法

    二进制数据一般输入的格式是0x45, 0x3a, 0xc3, 这种数据格式看起来是16进制的字符串,但是实际上在存储的时候每个都对应一个字节,比如0x45的二进制字节就是0100 0101,对应的16进制字符串就是0x45.实际编程过程中,经常遇到这两种格式的相互转化,在此记录一下代码. 二进制数据转化为16进制字符串(中间加的':'还有':'是为了查看下标,也可以自行去掉): public static String bytesToHexString(byte[] src){ StringBu

  • js操作二进制数据方法

    最近做了几个项目,用js操作二进制数据,通过socket与后台进行传输.在此用博客做个记录 首先是新建一个socket: var socket=new WebSocket("ws://192.168.0.147"); 接着定义socket打开,连接之后执行的函数: websocket有个属性binaryType,可将其设置为"blob"或者"arraybuffer",默认格式为"blob",做项目的时候忘记设置为"a

随机推荐