有一个sql数据库以格式存储颜色,int
例如信封后面的15620996,即使在计算器的帮助下,它也是粉红色的......
为了使用这个数字作为颜色,我以各种方式转换它
我在这里找到了这个功能
DECLARE @digit char(1)
SET @seq = '0123456789ABCDEF'
SET @result = SUBSTRING(@seq, (@value%16)+1, 1)
WHILE @value > 0
BEGIN
SET @digit = SUBSTRING(@seq, ((@value/16)%16)+1, 1)
SET @value = @value/16
IF @value <> 0 SET @result = @digit + @result
END
RETURN @result
END
GO
SELECT dbo.ToHex(15620996) ---> EE5B84 => что равно розовый
程序本身也是如此
,(SELECT '#' + FORMAT(MyColorFromDB, 'X') FROM MyTable WHERE someCondition) AS ColorTaskHex
这返回了粉红色,但问题是在从数据库中获取此颜色的程序中它是紫色的,该程序是用WinDev编写的,当我获取它并picker
用标记突出显示程序中的颜色时,它给了我rgb(132, 91, 238)
=> ,然后我在WinDev84, 5B, EE
中输入并收到15620996,也就是说,保存数据是正确的,我们保存了Violet,但是我们如何从中取回十六进制或rgb格式的正常颜色(从rvb(? )) ? rvb(132,91,238)
int
我在文档本身中阅读了它,但我不明白如何创建“反向”算法。
我没有找到标签WinDev
,也许很少有人使用过这个,但也许有想法可以在哪里挖掘?
我现在看到 84、5B、EE(程序中的紫色)和 EE5B84(粉色,我通过转换从 int 得到的),好像它改变了第一个和最后一个值?或者巧合...
将数字转换
15620996
为十六进制形式即可得到0xEE5B84
。这是您的(84、5B、EE),您可以通过任何方便的方式获取它们。这是获取所有三个 RGB 分量的方法:
// - 整数除法,% - 除法的余数。
结论是 int,即 BGR,我们将手动从数据库中选择,为我们的特定请求交换位置,因此:
我创建一个函数并将顺序设置为 BBGGRR
我打电话提出请求
在出口处
RGB(132,91,238)