Hay una función integrada para generar cadenas hexadecimales de valores binarios
SELECT
'#' + sys.fn_varbintohexstr(CONVERT(BINARY(3), 0)),
'#' + sys.fn_varbintohexstr(CONVERT(BINARY(3), 255))
Necesitas binary(3)
para garantizar la longitud correcta de la cadena de salida
Esto es incorrecto. Obtienes 4 dígitos hexadecimales porque 0 y 255 aquí son 4 bytes int
valores
SELECT
'#' + sys.fn_varbintohexstr(CONVERT(varBINARY(8), 0)),
'#' + sys.fn_varbintohexstr(CONVERT(varBINARY(8), 255))
Actualización de octubre de 2017:
La conversión ahora está integrada en SQL Server (¡desde 2008!), así que simplemente podemos usar CONVERT
SELECT '#' + CONVERT(char(6), CONVERT(BINARY(3), 2570841), 2)