6

整数を 16 進数の文字列に変換するにはどうすればよいですか? int を、「#ff0000」など、ページで色として使用できる形式に変換したいと考えています。

たとえば、次のようになります。

--This converts my int to hex:
CONVERT(VARBINARY(8), Color) Color,

そして、私はこのようなことをしたい:

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

ただし、varbinary 文字列を変換すると、実際の 16 進文字列が返されるのではなく、ASCII 文字に変換されるだけです。

4

2 に答える 2

2

int から varbinary への変換は SQL SERVER では暗黙的に行われるため、SELECT sys.fn_varbintohexstr(1234567) を使用することもできます。

ただし、長い数値リテラルは BIGINT ではなく DECIMAL 値として解釈されるため、BIGINT 値には注意してください。10 進数には精度を保持するための接頭辞データがあり、バイト順が逆になっているため、次のようになります。

select sys.fn_varbintohexstr(2147483648)

0x0A00000100000080 を返します

明示的に BIGINT に変換する必要があります。

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

0x0000000080000000を返します

于 2014-11-28T16:54:26.043 に答える