Преобразуйте целое число, чтобы преобразовать в шестнадцатеричную систему и преобразовать в шестнадцатеричную систему к целому числу

Назовите это так

body.addEventListener('keyup', (ev) => this.moveAvatar(ev));

(ИЛИ)

body.addEventListener('keyup', this.moveAvatar.bind(this));
73
задан bluish 4 April 2013 в 09:34
поделиться

3 ответа

Преобразуйте INT для преобразовывания в шестнадцатеричную систему:

SELECT CONVERT(VARBINARY(8), 16777215)

Преобразуйте шестнадцатеричное число в INT:

SELECT CONVERT(INT, 0xFFFFFF)

Обновление 16.03.2015

Вышеупомянутый пример имеет ограничение, что это только работает, когда ШЕСТНАДЦАТЕРИЧНОЕ значение дано как целочисленный литерал. Для полноты, если значение для преобразования является шестнадцатеричной строкой (такой, как найдено в varchar столбце) использование:

-- If the '0x' marker is present:
SELECT CONVERT(INT, CONVERT(VARBINARY, '0x1FFFFF', 1))

-- If the '0x' marker is NOT present:
SELECT CONVERT(INT, CONVERT(VARBINARY, '1FFFFF', 2))

Примечание: Строка должна содержать четное число шестнадцатеричных цифр. Нечетное число цифр приведет к ошибке.

Больше деталей может быть найдено в разделе "Binary Styles" БРОСКА и ПРЕОБРАЗОВАТЬ (Transact-SQL). Я верю SQL Server 2008, или позже требуется.

108
ответ дан Lauren Van Sloun 24 November 2019 в 12:09
поделиться

Используйте master.dbo.fnbintohexstr (16777215) для преобразования в представление varchar .

2
ответ дан 24 November 2019 в 12:09
поделиться

Вот функция для SQL-сервера, которая преобразует целочисленное значение в его шестнадцатеричное представление как varchar. Его должно быть легко адаптировать к другим типам баз данных

Например:

SELECT dbo.ToHex(4095) --> FFF

SQL:

CREATE FUNCTION ToHex(@value int)
RETURNS varchar(50)
AS
BEGIN
    DECLARE @seq char(16)
    DECLARE @result varchar(50)
    DECLARE @digit char(1)
    SET @seq = '0123456789ABCDEF'

    SET @result = SUBSTRING(@seq, (@value%16)+1, 1)

    WHILE @value > 0
    BEGIN
        SET @digit = SUBSTRING(@seq, ((@value/16)%16)+1, 1)

        SET @value = @value/16
        IF @value <> 0 SET @result = @digit + @result
    END 

    RETURN @result
END
GO
5
ответ дан 24 November 2019 в 12:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: