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,如需转载请自行联系原作者


相关文章
|
2月前
thinkphp5.1隐藏index.php入口文件
thinkphp5.1隐藏index.php入口文件
31 0
thinkphp5.1隐藏index.php入口文件
|
12天前
|
安全 PHP 数据库
【PHP开发专栏】PHP文件包含漏洞与防范
【4月更文挑战第30天】本文探讨了PHP文件包含漏洞,该漏洞让攻击者能执行恶意代码或访问敏感信息。文章分为三部分:原理、影响和防范。文件包含函数(如`include`和`require`)在攻击者控制文件名时可能导致漏洞。影响包括执行恶意代码、泄露敏感信息和影响服务器性能。防范措施包括验证文件名安全性、使用安全包含函数、设置安全包含路径和参数,以及定期更新和维护代码及库。开发者应重视此问题,采取相应措施保障应用安全。
|
4月前
|
PHP 数据安全/隐私保护
php案例:判断这个文件是什么编程语言代码的文件(判断java或者php)
php案例:判断这个文件是什么编程语言代码的文件(判断java或者php)
php案例:判断这个文件是什么编程语言代码的文件(判断java或者php)