De Decimal ah HEX

04/01/2008 - 14:35 por ®EL MANGOSTA | Informe spam
Hola amigos,

Alguien sabe si existe alguna función que me convierta numeros de DEC a HEX ..

He buscado pero no encuentro ...

De antemano muchas gracias.

Mauricio Pérez
Santiago de Chile.

Preguntas similare

Leer las respuestas

#1 jcac
04/01/2008 - 16:24 | Informe spam
Hola Mauricio,

Espero esto te ayude

create function Dec2Hex(@Numero int)
returns varchar(100)
as
begin
declare @lnResto int, @lcCadena varchar(100), @lcCadena1 varchar(100)
set @lnResto = (@Numero/16.00 - @Numero/16)*16
set @Numero = @Numero/16
if @lnResto < 10
set @lcCadena = convert(varchar(1), @lnResto)
else
set @lcCadena = char(55 + @lnResto)
if @Numero > 0
begin
select @lcCadena1 = dbo.Dec2Hex(@Numero)
select @lcCadena = @lcCadena1 + @lcCadena
end
else
begin
set @lcCadena = @lcCadena
end
return(@lcCadena)
end

select dbo.Dec2Hex(200)

Saludos


"®EL MANGOSTA" escribió en el mensaje
news:
Hola amigos,

Alguien sabe si existe alguna función que me convierta numeros de DEC a
HEX ..

He buscado pero no encuentro ...

De antemano muchas gracias.

Mauricio Pérez
Santiago de Chile.

Respuesta Responder a este mensaje
#2 ®EL MANGOSTA
04/01/2008 - 16:49 | Informe spam
Jcac,

Muchas, Muchas, Muchas Gracias
Es justo lo que necesitaba.




"jcac" wrote:

Hola Mauricio,

Espero esto te ayude

create function Dec2Hex(@Numero int)
returns varchar(100)
as
begin
declare @lnResto int, @lcCadena varchar(100), @lcCadena1 varchar(100)
set @lnResto = (@Numero/16.00 - @Numero/16)*16
set @Numero = @Numero/16
if @lnResto < 10
set @lcCadena = convert(varchar(1), @lnResto)
else
set @lcCadena = char(55 + @lnResto)
if @Numero > 0
begin
select @lcCadena1 = dbo.Dec2Hex(@Numero)
select @lcCadena = @lcCadena1 + @lcCadena
end
else
begin
set @lcCadena = @lcCadena
end
return(@lcCadena)
end

select dbo.Dec2Hex(200)

Saludos


"®EL MANGOSTA" escribió en el mensaje
news:
> Hola amigos,
>
> Alguien sabe si existe alguna función que me convierta numeros de DEC a
> HEX ..
>
> He buscado pero no encuentro ...
>
> De antemano muchas gracias.
>
> Mauricio Pérez
> Santiago de Chile.
>



Respuesta Responder a este mensaje
#3 jcac
04/01/2008 - 16:54 | Informe spam
De nada, estamos para ayudarnos

Saludos


"®EL MANGOSTA" escribió en el mensaje
news:
Jcac,

Muchas, Muchas, Muchas Gracias
Es justo lo que necesitaba.




"jcac" wrote:

Hola Mauricio,

Espero esto te ayude

create function Dec2Hex(@Numero int)
returns varchar(100)
as
begin
declare @lnResto int, @lcCadena varchar(100), @lcCadena1 varchar(100)
set @lnResto = (@Numero/16.00 - @Numero/16)*16
set @Numero = @Numero/16
if @lnResto < 10
set @lcCadena = convert(varchar(1), @lnResto)
else
set @lcCadena = char(55 + @lnResto)
if @Numero > 0
begin
select @lcCadena1 = dbo.Dec2Hex(@Numero)
select @lcCadena = @lcCadena1 + @lcCadena
end
else
begin
set @lcCadena = @lcCadena
end
return(@lcCadena)
end

select dbo.Dec2Hex(200)

Saludos


"®EL MANGOSTA" escribió en el
mensaje
news:
> Hola amigos,
>
> Alguien sabe si existe alguna función que me convierta numeros de DEC a
> HEX ..
>
> He buscado pero no encuentro ...
>
> De antemano muchas gracias.
>
> Mauricio Pérez
> Santiago de Chile.
>



Respuesta Responder a este mensaje
#4 Alejandro Mesa
05/01/2008 - 03:02 | Informe spam
EL MANGOSTA,

Tambien puedes usar una funcion, no documentada, que esta en la db master y
se llama fn_varbintohexstr.

Ejemplo:

DECLARE @x VARBINARY(4)
DECLARE @i INT

SET @i = 200
SET @x = CAST(@i AS VARBINARY(4))

SELECT MASTER.sys.fn_varbintohexstr(@x)
GO

AMB


"®EL MANGOSTA" wrote:

Hola amigos,

Alguien sabe si existe alguna función que me convierta numeros de DEC a HEX ..

He buscado pero no encuentro ...

De antemano muchas gracias.

Mauricio Pérez
Santiago de Chile.

Respuesta Responder a este mensaje
#5 Carlos M. Calvelo
05/01/2008 - 14:12 | Informe spam
Hola Alejandro,

On 5 jan, 03:02, Alejandro Mesa
wrote:

Tambien puedes usar una funcion, no documentada, que esta en la db master y
se llama fn_varbintohexstr.




Interesante. Como lo son también estas pruebas que hice.

He redefinido la función Dec2Hex() de jcac para evitar la recursión.
Asi:

CREATE function Dec2Hex(@n bigint)
returns varchar(20)
as
begin
declare @r bigint, @s varchar(20)
set @s = ''
while @n <> 0
begin
set @r = @n % 16
set @n = @n / 16
if @r < 10
set @s = cast(@r as char(1)) + @s
else
set @s = char(55 + @r) + @s
end
return case @s when '' then '0' else @s end
end

Con esto he hecho las siguiente pruebas en SS 2000 y 2005 (express):

DECLARE @x VARBINARY(4)
DECLARE @i INT
DECLARE @j INT
DECLARE @s AS CHAR(20)

SET @i = 1000000
SET @x = CAST(@i AS VARBINARY(4))

SET @j = 0
WHILE @j < @i
BEGIN
SET @s = master.dbo.fn_varbintohexstr(@x)

SET @j = @j+1
END
select @s

O bien ejecuto dec2hex() o fn_bintohexstr() un millón de veces,
poniendo uno de los dos como comentario.

En mi laptop con SS 2000,

dec2hex(): 31 s
fn_varbintohexstr: 50 s

y con SS 2005,

dec2hex(): 46 s
fn_varbintohexstr: 129 s.

Me sorprenden dos cosas. dec2hex() es mucho mas eficiente que
fn_varbintohexstr() y SS 2005 es mucho mas lento que SS 2000.

Lo primero se entiende un poco si se le echa un vistazo a la
función fn_varbintohexsubstring() que utiliza fn_bintohexstr().
La diferencia entre SS2000 y SS2005 para dec2hex() es de
un factor 1,48 y para fn_varbintohexstr() 2,58. Y esto si que
me parece bastante sorprendente e incomprensible.
Por lo menos, la función dec2hex() es exactamente la misma!

Tendrá MS algún acuerdo con los fabricantes de hardware? :-)

Saludos,
Carlos
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida