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,如需轉載請自行聯絡原作者
相關文章
- MySQL二進位制檔案(binlog)MySql
- flutter-讀寫二進位制檔案到裝置Flutter
- 二進位制檔案視覺化(二)視覺化
- Git處理二進位制檔案Git
- 檔案操作(二進位制拷貝)
- 二進位制檔案記憶體對映記憶體
- 二進位制檔案安裝安裝etcd
- 介面返回二進位制檔案的下載。
- C++ 讀取二進位制檔案到char*C++
- 檢視寶塔mysql二進位制檔案 mysqlbinlogMySql
- 6.3建立自己執行的二進位制檔案
- 【Linux】檢視二進位制檔案內容_hexdumpLinux
- golang: 給二進位制檔案增加版本資訊Golang
- go 自定義二進位制檔案讀寫-儲存倒排索引文件 idGo索引
- 二進位制與二進位制運算
- JavaScript 讀寫二進位制資料JavaScript
- 讀入寫出,轉二進位制
- 進位制詳解:二進位制、八進位制和十六進位制
- od 轉儲 二進位制檔案常用命令
- 前端怎麼處理二進位制檔案下載前端
- mysqlbinlog 處理二進位制日誌檔案的工具MySql
- 如何將日誌檔案和二進位制檔案快速匯入HDFS?
- 二進位制檔案和符號檔案(PDB)如何校驗是否匹配符號
- 文盤Rust -- 如何把配置檔案打包到二進位制檔案裡Rust
- JavaScript 二進位制、八進位制與十六進位制JavaScript
- Linux安裝二進位制PHP7.2LinuxPHP
- 使用Zephir來快速編寫高效能PHP二進位制擴充PHP
- 二進位制
- (二進位制)
- 十進位制——二 (八、十六 )進位制
- 二進位制,八進位制,十進位制,十六進位制的相互轉換
- C語言實現檔案複製功能(包括文字檔案和二進位制檔案)C語言
- 判斷檔案為文字檔案還是二進位制檔案(C語言實現)C語言
- 加強版二進位制讀寫器
- CentOS6.5二進位制檔案安裝MySQL5.6.39CentOSMySql
- 使用 IDA 處理 U-Boot 二進位制流檔案boot
- office檔案格式複合文件二進位制結構解析
- 根據介面返回的二進位制流匯出檔案
- Debian 二進位制檔案(華文宋體字型)打包解包