生活随笔
收集整理的這篇文章主要介紹了
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 ????????$inputstr=sprintf("%02x",$item[4]); ??????$str=pack?("H2",$inputstr); ??????fwrite($fp,$str); ??} ??fclose($fp); ???????> ? ?
總結
以上是生活随笔為你收集整理的php写二进制文件的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。