php写二进制文件

简介:

 

 
  1. <?php  
  2.  
  3. /*  
  4.  
  5.     二进制文件格式如下  
  6.  
  7.     +-----------------------------------------------------+  
  8.  
  9.     |总记录数(4B)|空白(7B)--------------------------------|  
  10.  
  11.     |开始ip(4B) |结束ip(4B) |省id(1B)|市id(1B)|ispid(1B)|  
  12.  
  13.     |开始ip(4B) |结束ip(4B) |省id(1B)|市id(1B)|ispid(1B)|  
  14.  
  15.     |开始ip(4B) |结束ip(4B) |省id(1B)|市id(1B)|ispid(1B)|  
  16.  
  17.     +-----------------------------------------------------+  
  18.  
  19. */  
  20.  
  21. //要写如的文件  
  22.  
  23.  
  24.  
  25. $filename="a.dat";  
  26.  
  27. //wb表示用二进制重新写文件  
  28.  
  29.  
  30.  
  31. $fp=fopen($filename,'wb')or die("cannot open a.dat");  
  32.  
  33. //原始数据:开始ip,结束ip,省id,市id,isp的id  
  34.  
  35.  
  36.  
  37. $records=array(  
  38.  
  39.                   array(  
  40.  
  41.                           '110.25.23.1', //开始ip  
  42.  
  43.  
  44.  
  45.                           '110.25.23.254', //结束ip  
  46.  
  47.  
  48.  
  49.                           3, //省id  
  50.  
  51.  
  52.  
  53.                           1, //市id  
  54.  
  55.  
  56.  
  57.                           6 //isp的id  
  58.  
  59.  
  60.  
  61.                        ),  
  62.  
  63.                   array(  
  64.  
  65.                           '210.200.10.1',  
  66.  
  67.                           '210.254.23.254',  
  68.  
  69.                           1,  
  70.  
  71.                           1,  
  72.  
  73.                           2  
  74.  
  75.                        ),  
  76.  
  77.                  array(  
  78.  
  79.                           '211.68.154.1',  
  80.  
  81.                           '211.254.47.254',  
  82.  
  83.                           2,  
  84.  
  85.                           2,  
  86.  
  87.                           2  
  88.  
  89.                        ),  
  90.  
  91.  
  92.  
  93.                                     array(  
  94.  
  95.                           '222.22.45.1',  
  96.  
  97.                           '254.255.255.255',  
  98.  
  99.                           3,  
  100.  
  101.                           3,  
  102.  
  103.                           3  
  104.  
  105.                        ),  
  106.  
  107.                   array(  
  108.  
  109.                           '255.255.255.255',  
  110.  
  111.                           '255.255.255.255',  
  112.  
  113.                           0,  
  114.  
  115.                           0,  
  116.  
  117.                           0  
  118.  
  119.                        )  
  120.  
  121.               );  
  122.  
  123.  
  124.  
  125. //计算记录总数  
  126.  
  127.  
  128.  
  129. $total=count($records);   
  130.  
  131. //用4个字节记录记录总数  
  132.  
  133.  
  134.  
  135. $inputstr=sprintf("%08x",$total);  
  136.  
  137. echo "$inputstr";  
  138.  
  139. //用4个字节记录记录总数,写入文件  
  140.  
  141.  
  142.  
  143. $str=pack ("H8",$inputstr);  
  144.  
  145. fwrite($fp,$str);   
  146.  
  147.  
  148.  
  149.  //补充7个字节的空白  
  150.  
  151.  
  152.  
  153. $str=pack ("a7","");  
  154.  
  155. fwrite($fp,$str);   
  156.  
  157. foreach($records as $item)  
  158.  
  159. {  
  160.  
  161.     //用4个字节记录开始ip  
  162.  
  163.  
  164.  
  165.     $inputstr=sprintf("%x",ip2long($item[0]));  
  166.  
  167.     $str=pack ("H8",$inputstr);  
  168.  
  169.     fwrite($fp,$str);  
  170.  
  171.       
  172.  
  173.         //用4个字节记录结束ip  
  174.  
  175.  
  176.  
  177.     $inputstr=sprintf("%x",ip2long($item[1]));  
  178.  
  179.     $str=pack ("H8",$inputstr);  
  180.  
  181.     fwrite($fp,$str);  
  182.  
  183.       
  184.  
  185.     //用1个字节记录省id  
  186.  
  187.  
  188.  
  189.     $inputstr=sprintf("%02x",$item[2]);  
  190.  
  191.     $str=pack ("H2",$inputstr);  
  192.  
  193.     fwrite($fp,$str);  
  194.  
  195.       
  196.  
  197.     //用1个字节记录市id  
  198.  
  199.  
  200.  
  201.     $inputstr=sprintf("%02x",$item[3]);  
  202.  
  203.     $str=pack ("H2",$inputstr);  
  204.  
  205.     fwrite($fp,$str);  
  206.  
  207.       
  208.  
  209.         //用1个字节记录ispid  
  210.  
  211.  
  212.  
  213.     $inputstr=sprintf("%02x",$item[4]);  
  214.  
  215.     $str=pack ("H2",$inputstr);  
  216.  
  217.     fwrite($fp,$str);  
  218.  
  219. }  
  220.  
  221. fclose($fp);  
  222.  
  223.  
  224.  
  225.  
  226.  
  227. ?>  

         本文转自yifangyou 51CTO博客,原文链接:http://blog.51cto.com/yifangyou/609333,如需转载请自行联系原作者


相关文章
thinkphp5.1隐藏index.php入口文件
thinkphp5.1隐藏index.php入口文件
171 0
thinkphp5.1隐藏index.php入口文件
php常见问题,php.ini文件不存在或者找不到,mb_strlen()函数未定义系列问题,dll模块找不到的解决
本文介绍了解决PHP常见问题的步骤,包括定位和创建`php.ini`文件,以及解决`mb_strlen()`函数未定义和DLL模块加载错误的具体方法。
php常见问题,php.ini文件不存在或者找不到,mb_strlen()函数未定义系列问题,dll模块找不到的解决
|
存储 运维 Serverless
函数计算产品使用问题之在YAML文件中配置了环境变量,但在PHP代码中无法读取到这些环境变量,是什么原因
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
326 1
|
前端开发 PHP
php学习笔记-php文件表单上传-day06
本文介绍了PHP文件上传处理流程、预定义变量`$_FILES`的使用、文件上传状态代码以及文件上传实现函数。同时,通过一个文件上传的小例子,演示了文件上传表单的创建、文件上传表单处理的PHP页面编写以及运行测试输出。
php学习笔记-php文件表单上传-day06
|
缓存 监控 算法
分析慢日志文件来优化 PHP 脚本的性能
分析慢日志文件来优化 PHP 脚本的性能
|
PHP
PHP遍历文件并同步上传到服务器
在进行网站迁移时,由于原网站的图片文件过多,采用打包下载再上传的方式耗时过长,且尝试使用FTP工具从旧服务器传输至新服务器时失败。为解决此问题,特使用PHP编写了一款工具,该工具能扫描指定目录下的所有`.webp`图像文件,并将其上传至新的服务器,极大地提高了迁移效率。
293 16
|
存储 安全 数据库连接
php.ini 文件的用途是什么?
【8月更文挑战第29天】
319 1
|
Java 应用服务中间件 PHP
PHP——调用java文件中的方法
PHP——调用java文件中的方法
228 0
PHP——调用java文件中的方法
进入靶场,出现一张照片,右击查看源代码,发现有一个注释的source.php文件
这段代码实现了一个网站上弹出的促销海报动画效果,包含一个关闭按钮。当促销海报弹出时,会在三秒后开始抖动一两下。海报使用固定定位居中显示,带有阴影和圆角,关闭按钮位于右上角。可以通过修改时间参数调整弹出时间。
152 0