\x 開頭編碼是 16進位的數字,可以直接轉成一般文字輸出,可詳見此篇:將 \x 開頭編碼的資料轉成中文輸出
但是想要將 \x 於 html input / textarea 傳送,再用 $_GET、$_POST 等接收 並且做轉換,要怎麼做呢?
將 \x 開頭編碼的資料使用 HTTP POST 傳送與接收
文字轉16進位 與 16進位轉文字,由 POST 接收下來的值($_POST['string']) 先不做任何檢查,直接寫在程式裡面,比較容易懂
- <?php
- if ($submit == '文字轉16進位') {
- $hex = bin2hex($_POST['string']);
- $hex = chunk_split($hex, 2, '\x')
- } else if ($submit == '16進位轉文字') { // \x 轉成文字
- $hex = str_replace('\x', '', $_POST['string']);
- $hex = pack("H*", $hex);
- $string = sprintf('%s', $hex);
- // echo $string;
- } ?>
文字轉16進位的寫法速度比較
文字轉16進位的兩種寫法,第二種寫法的速度比較快
- <?php
- $str = '文字轉十六進位';
- $r = '';
- for ($i = 0; $i < strlhex($str); $i++) {
- }
- echo $r . PHP_EOL;
- ?>
- <?php
- // 這個比較快
- $s = '文字轉十六進位';
- $hex = bin2hex($s);
- $hex = chunk_split($hex, 2, '\x');
- echo $hex . "\n";
- ?>