C'è una funzione incorporata per generare stringhe esadecimali da valori binari
SELECT
'#' + sys.fn_varbintohexstr(CONVERT(BINARY(3), 0)),
'#' + sys.fn_varbintohexstr(CONVERT(BINARY(3), 255))
Hai bisogno di binary(3)
per garantire la lunghezza corretta della stringa di output
Questo è sbagliato. Ottieni 4 cifre esadecimali perché 0 e 255 qui sono 4 byte int
valori
SELECT
'#' + sys.fn_varbintohexstr(CONVERT(varBINARY(8), 0)),
'#' + sys.fn_varbintohexstr(CONVERT(varBINARY(8), 255))
Aggiornamento ottobre 2017:
La conversione è ora integrata in SQL Server (dal 2008!!), quindi possiamo semplicemente usare CONVERT
SELECT '#' + CONVERT(char(6), CONVERT(BINARY(3), 2570841), 2)