如何将整数转换为十六进制字符串?我想将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))
您需要binary(3)确保输出字符串的正确长度。 这是错误的。您会得到4个十六进制数字,因为这里的0和255是4个字节的int值
binary(3)
int
SELECT '#' + sys.fn_varbintohexstr(CONVERT(varBINARY(8), 0)), '#' + sys.fn_varbintohexstr(CONVERT(varBINARY(8), 255))
2017年10月更新:
转换现在已内置到SQL Server中(自2008年起!),因此我们可以简单地使用CONVERT
SELECT '#' + CONVERT(char(6), CONVERT(BINARY(3), 2570841), 2)