2016-08-01 56 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