生活随笔
收集整理的這篇文章主要介紹了
php写二进制文件
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
?
<?php ??/* ??????二進(jìn)制文件格式如下 ??????+??????|總記錄數(shù)(4B)|空白(7B)??????|開始ip(4B)?|結(jié)束ip(4B)?|省id(1B)|市id(1B)|ispid(1B)| ??????|開始ip(4B)?|結(jié)束ip(4B)?|省id(1B)|市id(1B)|ispid(1B)| ??????|開始ip(4B)?|結(jié)束ip(4B)?|省id(1B)|市id(1B)|ispid(1B)| ??????+??*/ ??//要寫如的文件 ????$filename="a.dat"; ??//wb表示用二進(jìn)制重新寫文件 ????$fp=fopen($filename,'wb')or?die("cannot?open?a.dat"); ??//原始數(shù)據(jù):開始ip,結(jié)束ip,省id,市id,isp的id ????$records=array( ????????????????????array( ????????????????????????????'110.25.23.1',?//開始ip ??????????????????????????????'110.25.23.254',?//結(jié)束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 ?????????????????????????) ????????????????); ????//計算記錄總數(shù) ????$total=count($records);? ??//用4個字節(jié)記錄記錄總數(shù) ????$inputstr=sprintf("%08x",$total); ??echo?"$inputstr"; ??//用4個字節(jié)記錄記錄總數(shù),寫入文件 ????$str=pack?("H8",$inputstr); ??fwrite($fp,$str);? ?????//補(bǔ)充7個字節(jié)的空白 ????$str=pack?("a7",""); ??fwrite($fp,$str);? ??foreach($records?as?$item) ??{ ??????//用4個字節(jié)記錄開始ip ????????$inputstr=sprintf("%x",ip2long($item[0])); ??????$str=pack?("H8",$inputstr); ??????fwrite($fp,$str); ?????? ??????????//用4個字節(jié)記錄結(jié)束ip ????????$inputstr=sprintf("%x",ip2long($item[1])); ??????$str=pack?("H8",$inputstr); ??????fwrite($fp,$str); ?????? ??????//用1個字節(jié)記錄省id ????????$inputstr=sprintf("%02x",$item[2]); ??????$str=pack?("H2",$inputstr); ??????fwrite($fp,$str); ?????? ??????//用1個字節(jié)記錄市id ????????$inputstr=sprintf("%02x",$item[3]); ??????$str=pack?("H2",$inputstr); ??????fwrite($fp,$str); ?????? ??????????//用1個字節(jié)記錄ispid ????????$inputstr=sprintf("%02x",$item[4]); ??????$str=pack?("H2",$inputstr); ??????fwrite($fp,$str); ??} ??fclose($fp); ???????> ? ?
總結(jié)
以上是生活随笔為你收集整理的php写二进制文件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。