Istnieje wbudowana funkcja do generowania szesnastkowych ciągów z wartości binarnych
SELECT
'#' + sys.fn_varbintohexstr(CONVERT(BINARY(3), 0)),
'#' + sys.fn_varbintohexstr(CONVERT(BINARY(3), 255))
Potrzebujesz binary(3)
aby zapewnić prawidłową długość ciągu wyjściowego
To jest nieprawidłowe. Otrzymasz 4 cyfry szesnastkowe, ponieważ 0 i 255 to 4 bajty int
wartości
SELECT
'#' + sys.fn_varbintohexstr(CONVERT(varBINARY(8), 0)),
'#' + sys.fn_varbintohexstr(CONVERT(varBINARY(8), 255))
Aktualizacja z października 2017 r.:
Konwersja jest teraz wbudowana w SQL Server (od 2008!!), więc możemy po prostu użyć CONVERT
SELECT '#' + CONVERT(char(6), CONVERT(BINARY(3), 2570841), 2)