Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL:将整数转换为十六进制字符串?_Sql_Sql Server 2008_Tsql_Colors_Hex - Fatal编程技术网

SQL:将整数转换为十六进制字符串?

SQL:将整数转换为十六进制字符串?,sql,sql-server-2008,tsql,colors,hex,Sql,Sql Server 2008,Tsql,Colors,Hex,如何将整数转换为十六进制字符串? 我想将int转换成一种可以在我的页面上用作颜色的格式,例如“ff0000” 例如: --This converts my int to hex: CONVERT(VARBINARY(8), Color) Color, 我想这样做: '#' + CONVERT(NVARCHAR(10), CONVERT(VARBINARY(8), Color)) Color 但是,转换varbinary字符串只是将其转换为ascii字符,而不是返回实际的十六进制字符串。有一个

如何将整数转换为十六进制字符串? 我想将int转换成一种可以在我的页面上用作颜色的格式,例如“ff0000”

例如:

--This converts my int to hex:
CONVERT(VARBINARY(8), Color) Color,
我想这样做:

'#' + CONVERT(NVARCHAR(10), CONVERT(VARBINARY(8), Color)) Color

但是,转换varbinary字符串只是将其转换为ascii字符,而不是返回实际的十六进制字符串。有一个内置函数可以从二进制值生成十六进制字符串

SELECT
    '#' + sys.fn_varbintohexstr(CONVERT(BINARY(3), 0)),
    '#' + sys.fn_varbintohexstr(CONVERT(BINARY(3), 255))
您需要binary3来确保输出字符串的长度正确 这是错误的。得到4个十六进制数字,因为这里的0和255是4字节的int值

2017年10月更新:

自2008年以来,该转换现已内置到SQL Server!!所以我们可以简单地使用CONVERT

SELECT '#' + CONVERT(char(6), CONVERT(BINARY(3), 2570841), 2)

在SQL SERVER中,从int到varbinary的转换是隐式的,因此您也可以使用 选择sys.fn_varbintohexstr1234567 你完成了

但要注意BIGINT值,因为长数值文本被解释为十进制值,而不是BIGINT。小数有前缀数据来保持精度,字节顺序是颠倒的,这就是为什么会得到这样的结果:

select sys.fn_varbintohexstr(2147483648)
返回0x0A000001000000080

您需要显式转换为BIGINT:

select select sys.fn_varbintohexstr(CONVERT(BIGINT(2147483648))

返回0x0000000080000000

,它似乎用于将int转换为十六进制格式,如0xFF4B0082。我需要一个字符串格式,我可以附加一个像'4B0082'非常感谢您的帮助开始!我看不出这两个选项有什么不同。最后,我使用了RIGHT,6来修剪“0x”,这些函数返回字符串开头的一个值,结果成功了!再次感谢X此函数返回的值以0x开头,因此您需要正确的,6围绕sys.fn_varbintohexstr使其看起来像FF00FF。意识到这个答案已经超过四年了-为什么不使用?选择CONVERTVARCHAR8、CONVERTVARBINARY8、987654321,2?@ruffin:该语法仅在SQL Server 2008中添加。比较与二进制样式。OP使用的是SQL Server 2008,但我可能混淆了它的版本
select select sys.fn_varbintohexstr(CONVERT(BIGINT(2147483648))