2016-08-01 85 views
1

考慮下面的語句在PHP字符串編碼格式的名稱

hex2bin(dechex(4112)) 

輸出和輸出這個

"\020\020" 

我已經認識到,這是十六進制表示的八進制表示的上述十進制值(4112 - >0x1010),每個八進制部分是反斜槓之間的東西。所以三個八進制數字用來表示兩個十六進制數字。這裏的0x10翻譯成020八進制,所以我們得到\020\020對於0x1010

但是這種編碼的名稱是什麼?它從何而來?在互聯網上搜索這個沒有多大幫助


此外,爲什麼下面的語句失敗?

hex2bin(dechex(123123)) 

回答

1

您將數字編碼爲二進制數據,使得最重要的字節排在第一位。這稱爲big-endian representation.

編碼123123與您的方法失敗,因爲dechex產生奇數個數字。你需要兩個十六進制數字來構成一個字節,所以hex2bin要求輸入字符串的長度是偶數。

+0

哦,也許我不清楚。我的意思是詢問具體格式的名稱是什麼,它代表八進制字節,每個字節用反斜槓 – Curious

+0

分開,儘管感謝讓我知道函數失敗,因爲字符串沒有長度! – Curious

+0

這就是所謂的八進制轉義字符串。在你的問題中沒有什麼產生這樣的字符串,我想這就是你用來調試的選擇如何顯示不可打印的字符。 – Joni