xxd filename
可以將一個檔案的二進位形式顯示在終端,無需考慮檔案是什麼形式的編碼。
如何用php實現同樣的功能?
1.fopen
2.fread
3.ehco不行,不能顯示文本的二進制,顯示的是文本,請問,這裡如何做?
我寫了一段程式碼
<code><?php $target="test.txt"; $file_handle = fopen($target, "rb"); while (!feof($file_handle)) { $byte = fread($file_handle,1); echo $byte; } fclose($file_handle ); ?> </code>
發現不行,顯示的是字元本身,不是字元的二進位表達。
預計這個ehco要改,請問,如何修改。
fwrite(STDOUT,$byte); 替換 echo $byte; 也不行。
修改了一下,離成功不遠了。
<code><?php function parse($target){ $file_handle = fopen($target, "rb"); while (!feof($file_handle)) { $byte = fread($file_handle,1); echo base_convert(ord($byte),10,2); } fclose($file_handle ); } parse('test.txt'); ?> 用一个只包含换行键的文件测试 xxd -b ./test.txt 0000000: 00001010 我的程序运行结果是: 10100</code>
xxd filename
可以將一個檔案的二進位形式顯示在終端,無需考慮檔案是什麼形式的編碼。
如何用php實現同樣的功能?
1.fopen
2.fread
3.ehco不行,不能顯示文本的二進制,顯示的是文本,請問,這裡如何做?
我寫了一段程式碼
<code><?php $target="test.txt"; $file_handle = fopen($target, "rb"); while (!feof($file_handle)) { $byte = fread($file_handle,1); echo $byte; } fclose($file_handle ); ?> </code>
發現不行,顯示的是字元本身,不是字元的二進位表達。
預計這個ehco要改,請問,如何修改。
fwrite(STDOUT,$byte); 替換 echo $byte; 也不行。
修改了一下,離成功不遠了。
<code><?php function parse($target){ $file_handle = fopen($target, "rb"); while (!feof($file_handle)) { $byte = fread($file_handle,1); echo base_convert(ord($byte),10,2); } fclose($file_handle ); } parse('test.txt'); ?> 用一个只包含换行键的文件测试 xxd -b ./test.txt 0000000: 00001010 我的程序运行结果是: 10100</code>
fopen mode參數基本模式後加改為b,如rb
,用來區分二進位流和文字檔。
與此對應也可以使用 'b' 來強制使用二進位模式,這樣就不會轉換資料。要使用這些標記,要麼用 'b' 或用 't'作為 mode 參數的最後一個字元
在伺服器端進行base64編碼,在客戶端端進行base64解碼
<code><?php $target="test.txt"; $file_handle = fopen($target, "rb"); while (!feof($file_handle)) { $byte = fread($file_handle,1); fwrite(STDOUT,$byte); } fclose($file_handle ); ?></code>
使用PHP輸出輸入流進行操作
<code>function strToTwo($str) { $res = ''; $len = strlen($str); for($i = 0; $i < $len; $i++) { $tmp = base_convert(ord($str[$i]), 10, 2); $res .= $tmp . ' '; } return trim($res); } var_dump(strToTwo("严"));</code>
UTF8編碼下的。這次應該對了。