在SQL Server 2012
中,您如何将由int
(存储为 0xBBGGRR)表示的颜色转换为格式为的字符串R=123, G=234, B=12
?我们将忽略 alpha 部分。
例如,给定一个整数 value 0xff223344
,你会得到R=68, G=51, B=34
。
在SQL Server 2012
中,您如何将由int
(存储为 0xBBGGRR)表示的颜色转换为格式为的字符串R=123, G=234, B=12
?我们将忽略 alpha 部分。
例如,给定一个整数 value 0xff223344
,你会得到R=68, G=51, B=34
。
使用按位和 (&) 运算符:
declare @i int
set @i=0xff223344
select
'R=' + cast(@i & 0xFF as varchar(3)) +
', G=' + cast((@i & 0xFF00) / 0x100 as varchar(3)) +
', B=' + cast((@i & 0xFF0000) / 0x10000 as varchar(3))
那么这样的解决方案呢?
declare @i int = 0x223344
select 'R=' + cast (@i % 256 as varchar)
+ ', G=' + cast (@i / 256 % 256 as varchar)
+ ', B=' + cast (@i / 65536 % 256 as varchar)
或者,如果您有一个ff
for alpha 通道:
declare @i int = 0xff443322
if @i < 0
set @i = @i % cast(0x1000000 as int) - cast(0xff000000 as int)
select 'R=' + cast (@i % 256 as varchar)
+ ', G=' + cast (@i / 256 % 256 as varchar)
+ ', B=' + cast (@i / 65536 % 256 as varchar)
Declare @i int
Set @i=0xff223344
select
'R=' + Cast(Cast(SubString(CAST(@i as BINARY(4)),4,1) as int) as Varchar(3))
+ ', G=' + Cast(Cast(SubString(CAST(@i as BINARY(4)),3,1) as int) as Varchar(3))
+ ', B=' + Cast(Cast(SubString(CAST(@i as BINARY(4)),2,1) as int) as Varchar(3))