Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Преобразование hex в decimal  [new]
Junior
Member

Откуда: Saint-Petersburg
Сообщений: 111
привет!
есть поле int в таблице, там хранятся шестнадцатеричные значения. Надо их оттуда достать, преобразовав в десятичное значение. Вопрос - как?

Я пытался так

select CONVERT(int,'0x' + CONVERT(varchar,DTC)) As DecDTC
Syntax error converting the varchar value '0x42103' to a column of data type int.

select CONVERT(int,'0x42103')
Syntax error converting the varchar value '0x42103' to a column of data type int.

SELECT CAST(0x42103 as int)
270595
18 ноя 05, 15:14    [2084000]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование hex в decimal  [new]
Berg
Member

Откуда: Кр-ск
Сообщений: 3480
Junior
есть поле int в таблице, там хранятся шестнадцатеричные значения.


да ладно шестнадцатиричные?

P.S. Скорее двоичные...

Ты не мудри, ты пальцем покажи...
18 ноя 05, 15:20    [2084035]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование hex в decimal  [new]
aleks2
Guest
select CONVERT(int, CONVERT(binary(3),'0x042103')) As DecDTC
18 ноя 05, 15:20    [2084041]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование hex в decimal  [new]
Junior
Member

Откуда: Saint-Petersburg
Сообщений: 111
aleks2
select CONVERT(int, CONVERT(binary(3),'0x042103')) As DecDTC

Работает, но фигню выдает в результате

Вот пример значений в таблице
37378
4678
289
38147

соответственно, должно получиться
226168
18040
649
229703
18 ноя 05, 15:32    [2084124]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование hex в decimal  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 34257
Блог
кавычки....
select CONVERT(int, CONVERT(varbinary(5000),0x37378))
18 ноя 05, 15:40    [2084167]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование hex в decimal  [new]
aleks2
Guest
Junior
aleks2
select CONVERT(int, CONVERT(binary(3),'0x042103')) As DecDTC

Работает, но фигню выдает в результате

Вот пример значений в таблице
37378
4678
289
38147

соответственно, должно получиться
226168
18040
649
229703


Это есть компьютерная бэзграмотность!
declare @s varchar(128), @i int
set @i=226168
select CONVERT(binary(4),@i) 
select @s=master.dbo.fn_varbintohexstr(CONVERT(binary(4),@i)) 
select @s
select CONVERT(binary(4),@s)
и почеши репу.
18 ноя 05, 15:42    [2084180]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование hex в decimal  [new]
aap9
Member

Откуда:
Сообщений: 21
У вас в строковом поле хранятся щестнадцатиричные значения (в int шестнадцатерицные значения храниться ну никак не могут) ?
18 ноя 05, 15:44    [2084196]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование hex в decimal  [new]
aap9
Member

Откуда:
Сообщений: 21
Могу себе пердставить только что-то типа этого
declare @a varchar(50),@b nvarchar(50), @i integer
set @a='0a' -- шестнадцатиричное значение
set @b='select @arg=cast(0x'+@a+' as int)'
select @b
exec sp_executesql @b,N'@arg int output',@i output
select @i
18 ноя 05, 15:46    [2084215]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование hex в decimal  [new]
Junior
Member

Откуда: Saint-Petersburg
Сообщений: 111
aap9
У вас в строковом поле хранятся щестнадцатиричные значения (в int шестнадцатерицные значения храниться ну никак не могут) ?


спасибо, действительно не могут, если подумать :) Как оказалось, надо сделать наоборот - из dec в hex преобразовать :)
18 ноя 05, 15:51    [2084235]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование hex в decimal  [new]
aap9
Member

Откуда:
Сообщений: 21
Выше уже перложили недокументированую функцию для такого преобразования
18 ноя 05, 15:56    [2084256]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование hex в decimal  [new]
Junior
Member

Откуда: Saint-Petersburg
Сообщений: 111
спасибо всем :)
18 ноя 05, 16:21    [2084393]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить