PHP写入二进制格式文件的代码
PHP #二进制2014-04-15 22:58
给大家分享一段用PHP写入二进制格式文件的代码。
<?php /* 二进制文件格式如下 +-----------------------------------------------------+ |总记录数(4B)|空白(7B)--------------------------------| |开始ip(4B) |结束ip(4B) |省id(1B)|市id(1B)|ispid(1B)| |开始ip(4B) |结束ip(4B) |省id(1B)|市id(1B)|ispid(1B)| |开始ip(4B) |结束ip(4B) |省id(1B)|市id(1B)|ispid(1B)| +-----------------------------------------------------+ */ //要写如的文件 $filename="a.dat"; //wb表示用二进制重新写文件 $fp=fopen($filename,'wb')or die("cannot open a.dat"); //原始数据:开始ip,结束ip,省id,市id,isp的id $records=array( array( '110.25.23.1', //开始ip '110.25.23.254', //结束ip 3, //省id 1, //市id 6 //isp的id ), array( '210.200.10.1', '210.254.23.254', 1, 1, 2 ), array( '211.68.154.1', '211.254.47.254', 2, 2, 2 ), array( '222.22.45.1', '254.255.255.255', 3, 3, 3 ), array( '255.255.255.255', '255.255.255.255', 0, 0, 0 ) ); //计算记录总数 $total=count($records); //用4个字节记录记录总数 $inputstr=sprintf("%08x",$total); echo "$inputstr"; //用4个字节记录记录总数,写入文件 $str=pack ("H8",$inputstr); fwrite($fp,$str); //补充7个字节的空白 $str=pack ("a7",""); fwrite($fp,$str); foreach($records as $item) { //用4个字节记录开始ip $inputstr=sprintf("%x",ip2long($item[0])); $str=pack ("H8",$inputstr); fwrite($fp,$str); //用4个字节记录结束ip $inputstr=sprintf("%x",ip2long($item[1])); $str=pack ("H8",$inputstr); fwrite($fp,$str); //用1个字节记录省id $inputstr=sprintf("%02x",$item[2]); $str=pack ("H2",$inputstr); fwrite($fp,$str); //用1个字节记录市id $inputstr=sprintf("%02x",$item[3]); $str=pack ("H2",$inputstr); fwrite($fp,$str); //用1个字节记录ispid http://yige.org/ $inputstr=sprintf("%02x",$item[4]); $str=pack ("H2",$inputstr); fwrite($fp,$str); } fclose($fp);
相关文章
- PHP去除数组中的空值 2014/04/15
- 用PHP删除MySQL死连接 2014/04/15
- PHP查看内存的使用信息 2014/04/15
- PHP查看CPU的使用信息 2014/04/15
- 配置Apache服务器的PHP错误提示 2014/04/15
- PHP给XML添加数据 2014/04/15
- PHP生成随机字符串的函数 2014/04/15
- PHP生成随机密码的函数 2014/04/14
- PHP计算时间差的方法 2014/04/13
- PHP的SQL注入式攻击介绍 2014/04/13