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);
- ?>
本文轉自yifangyou 51CTO部落格,原文連結:http://blog.51cto.com/yifangyou/609333,如需轉載請自行聯絡原作者
相關文章
- Python讀寫二進位制檔案Python
- C/C++ 二進位制讀寫 png 檔案C++
- 二進位制檔案複製
- 二進位制檔案拷貝
- flutter-讀寫二進位制檔案到裝置Flutter
- 二進位制檔案視覺化(二)視覺化
- 檔案操作(二進位制拷貝)
- Git處理二進位制檔案Git
- MySQL二進位制檔案(binlog)MySql
- std::ofstream由二進位制流寫檔案的問題
- js讀寫二進位制檔案簡單程式碼例項JS
- javascript讀寫二進位制檔案簡單程式碼例項JavaScript
- 文字檔案與二進位制檔案的區別
- Java二進位制Class檔案格式解析Java
- c++ 二進位制儲存檔案C++
- C#的二進位制檔案操作C#
- 使用UltraEdit 拷貝二進位制檔案
- MySQL 匯出匯入二進位制檔案MySql
- UltraEdit--二進位制檔案編輯功能
- 用shell處理二進位制檔案(轉)
- UE複製貼上二進位制檔案
- 二進位制檔案記憶體對映記憶體
- 介面返回二進位制檔案的下載。
- 第14周-閱讀專案1-二進位制檔案的讀寫
- php二進位制安全的含義PHP
- 二進位制與二進位制運算
- 二進位制檔案安裝安裝etcd
- 6.3建立自己執行的二進位制檔案
- C++ 讀取二進位制檔案到char*C++
- Oracle建立二進位制檔案索引的方法(轉)Oracle索引
- JavaScript 讀寫二進位制資料JavaScript
- 進位制詳解:二進位制、八進位制和十六進位制
- JavaScript 二進位制、八進位制與十六進位制JavaScript
- go 自定義二進位制檔案讀寫-儲存倒排索引文件 idGo索引
- iOS系統分析(二)Mach-O二進位制檔案解析iOSMac
- (二進位制)
- 二進位制
- 【Linux】檢視二進位制檔案內容_hexdumpLinux