将负色数转换为HEX或RGB

时间:2017-03-06 19:06:02

标签: php css sql oracle colors

我从未见过像-1-16777216-256等颜色代码。所以我目前的问题是:

我们有第三方软件,您可以对其进行颜色编码,如下图所示。

software

现在我正在创建一个显示这些值的PHP报告,但我也希望使用与软件中定义的颜色相同的颜色显示它们。我能够从数据库中查找值,但我很困惑,因为值是我不熟悉的格式或符号。

database

你能帮助我将这些值转换为Oracle或PHP中的HEX或RGB,这是我习惯的(我会将它用于报告的CSS)。

修改

查看数据库和软件中的颜色,我至少可以匹配数字:

  

-1 =白色

     

-12582784 =紫色

     

-65408 =粉红色

     

-16777216 =黑色

     

-256 =黄色

附加编辑

所以看起来16777216是一个完美的立方体数字。它的立方根是256(在RGB上,每个原色可以用0-255的数字表示)。到目前为止,这是我能看到的唯一关系。我仍然不知道如何将其转换为HEX或RGB。

我做过一些研究,虽然效果不佳。但是我会把它包括在内,所以我看起来并没有尝试 - 如果你对它不感兴趣那么就忽略它:

16777216 - 我开始搜索实际代码-16777216但是没有返回任何内容,所以我删除了否定符号。

Facts about 16777216 - 该页面显示了一些公式,但我没有看到任何转换为​​HEX或RGB的内容。

3 个答案:

答案 0 :(得分:4)

您的颜色确实是以略微扭曲的方式存储的RGB值。 您所要做的就是从16777216取十进制数并转换为HEX。

16777216-1 = 16777215(FFFFFFh =白色)

16777216-12582784 = 4194432(400080h =紫色)

16777216-65408 = 16711808(FF0080h =粉红色)

16777216-16777216 = 0(000000h =黑色)

16777216-256 = 16776960(FFFF00h =黄色)

我希望这会有所帮助。 不写代码的道歉,但我担心我的学习还没有完成。我保证当我到达那里时我会继续努力。 :)

答案 1 :(得分:0)

我建议使用PHP将BACK_COLOR(即"编码的颜色引用ID")拉入每个表格单元格。出于CSS的原因,为带有字符的负数前缀。包括指定每个动态类的颜色的CSS。

<style>
.g-1 { color: #000; background: #ffffff /* white */ } 
.g-12582784 { color: #fff; background: #3F0180 /* purple */ } 
.g-65408 { color: #fff; background:  #FF0080 /* pink */ } 
.g-256 background: { color: #000; #FFFD05 /* yellow */ }
.g-16777216 { color: #fff; background: #000000 /* black */ }
</style>

<table>
<tr>
<td class="g-12582784">Option 1</span> <!-- use PHP to generate this class -->
<td class="g-65408">Option 2</span> <!-- use PHP to generate this class -->
<td class="g-256">Option 3</span> <!-- use PHP to generate this class -->
</tr>
</table>

答案 2 :(得分:0)

在PHP中,我创建了这个函数thanks to this note

function toColor($n) {
    return ("#".substr("000000".dechex($n),-6));
}

它将signed int转换为十六进制,看起来颜色匹配。在一个单独的任务中,我想减少Alpha通道,因为颜色非常强,但我会将其保存一天。