【问题标题】:String encoding format name字符串编码格式名称
【发布时间】:2016-12-06 05:21:06
【问题描述】:

考虑php中以下语句的输出

hex2bin(dechex(4112))

以及这个的输出

"\020\020"

我已经明白这是上述十进制值 (4112 -> 0x1010) 的十六进制表示的八进制表示,每个八进制部分都是反斜杠之间的内容。所以用三个八进制数字来表示两个十六进制数字。这里0x10 转换为八进制的020,所以我们得到\020\020 for 0x1010

但是这种编码的名称是什么?它从何而来?在互联网上搜索这方面并没有多大帮助


还有为什么下面的语句会失败?

hex2bin(dechex(123123))

【问题讨论】:

    标签: php string encoding hex octal


    【解决方案1】:

    您将数字编码为二进制数据,以使最重要的字节排在第一位。这叫big-endian representation.

    使用您的方法编码 123123 失败,因为 dechex 产生奇数位数。你需要两个十六进制数字来组成一个字节,所以 hex2bin 要求输入字符串的长度是偶数。

    【讨论】:

    • 哦,也许我不清楚。我的意思是问特定格式的名称是什么,它表示八进制字节,每个字节由反斜杠分隔
    • 虽然感谢你让我知道函数失败了,因为字符串没有长度!
    • 这就是所谓的八进制转义字符串。您的问题中没有任何内容会产生这样的字符串,我想这就是您用于调试的任何内容选择显示不可打印字符的方式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-02
    • 2010-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多