【问题标题】:dechex returning wrong colordechex 返回错误的颜色
【发布时间】:2020-11-11 18:33:11
【问题描述】:

我将十六进制颜色作为十进制数存储在数据库中,我想使用 dechex() PHP 命令将其转换回十六进制。它适用于除一种以外的所有颜色。这是我的部分代码。

$color = '#'.dechex($crew->color);

如果我将 $crew->color 设置为 2139062017,它将返回该颜色的正常十六进制值,但如果我将 $crew->color 设置为负值,则会得到错误的输出。例如,如果我将$crew->color 设置为-9849601,我的输出看起来像这样#ffffffffff69b4ff(这接近正确,因为输出应该是#ff69b4ff,我只是在颜色字符串中得到那些额外的“f”。

有什么建议可以摆脱那些“f”,或者我应该怎么做才能修复 dechex() 命令?

【问题讨论】:

    标签: php colors


    【解决方案1】:

    看起来它使用的是 64 位,当使用 2 的补码(负数)时,您会得到 ffffffffff69b4ff

    我能想到的将其限制为 32 位数字的最简单方法是只取结果中的最后 8 个字符(在此示例中使用 substr(, -8))...

    $color = '#'.substr(dechex($crew->color), -8);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-03
      • 2014-01-05
      • 2021-10-01
      • 2012-07-01
      • 2019-05-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多