【问题标题】:Convert Integer to hex values in PHP在 PHP 中将整数转换为十六进制值
【发布时间】:2011-04-12 01:22:23
【问题描述】:

如何将PHP中第一类中的数字转换为第二类中的数字,是否有内置函数可以转换数字?也是我的标题“ 将整数转换为十六进制值”是否正确?

class Permission {
    const READ         = 1;
    const UPDATE       = 2;
    const DELETE       = 4;
    const COMMENT      = 8;
    const GRANT        = 16;
    const UNDELETE     = 32;
    const WHATEVER     = 64;
}

进入这个

class Permission {
    const READ     = 0x0001;
    const UPDATE   = 0x0002;
    const DELETE   = 0x0004;
    const COMMENT  = 0x0008;
    const GRANT    = 0x0010;
    const UNDELETE = 0x0020;
    const WHATEVER = 0x0040;
}

更新

详细说明我正在尝试做的事情。
我目前使用带有位掩码类的第一类进行设置,
有人建议我改成第二堂课的格式。
但是我不知道他们是如何从我第一堂课的数字中得出 0x0020 样式的数字的。

我现在知道如何从 32 获得 20,但我不知道他们如何或为什么在其前面添加 0x00使 0x0020 替换我原来的 32

【问题讨论】:

  • 为什么需要转换它们?

标签: php


【解决方案1】:

你想要:

dechex()

http://php.net/manual/en/function.dechex.php

十进制转十六进制。

【讨论】:

    【解决方案2】:

    您不能只输入十六进制数字开头吗?

    尝试sprintf()/printf() 即时转换他们:

    printf('%x', 42); // 2a
    

    【讨论】:

    • 哦,我看到了类似 printf('0x00%x', 64);会给出结果,谢谢
    【解决方案3】:

    我在这里有点困惑...... 0x01 = 1。 0x020 = 32 等

    您是否正在寻找一些像 printf/sprintf 中可用的字符串格式化程序?您可以使用 %x 标记来输出十六进制值。

    编辑:另外,是的,您的转换是正确的。

    【讨论】:

    • 零只会增加可读性。您通常会用零填充您的十六进制数字以直观地显示它们的大小(字节、字、双字等),但这不是必需的。 0x20 = 0x0020 = 0x0000020 = 32 十进制。
    猜你喜欢
    • 2010-10-16
    • 1970-01-01
    • 2011-08-05
    • 2014-04-16
    • 2016-12-04
    • 1970-01-01
    相关资源
    最近更新 更多