Convertir byte[] a entero...

11/01/2007 - 20:31 por RFOG | Informe spam
... pero en hexadecimal.

Tengo un array de bytes con un número formateado en caracteres
hexadecimales:

"056E7FF" (imaginemos que es un array de byte).

Necesito convertir ese valor a un número decimal, es decir, meter su valor
en una variable númerica de tipo int.

La conversión mediante BitConverter no me funciona porque lo que hay en el
array no es realmente un número, si no el equivalente en ASCII.

La conversión pasando del array de bytes a string no me funciona porque en
lugar de ponerme la tira de bytes como una cadena me pone una cadena
describiendo la variable.

Imagino que hay algo evidente pero que no he sido capaz de encontrar, con lo
fácil que es en C++ nativo:

int num=atoi(array,16); //16 es la base.

Ya sé que puedo convertirlo "a mano", recorriendo cada byte y haciendo las
operaciones, pero tiene que haber algo en el .NET que lo haga.


Visita mi blog principal: http://rfog.blogsome.com
Y este sobre programación: http://geeks.ms/blogs/rfog
Libros, ciencia ficción y programación
El secreto de aburrir a la gente consiste en decirlo todo.

Preguntas similare

Leer las respuestas

#1 Octavio Hernandez
12/01/2007 - 02:00 | Informe spam
Hola Rafa,

Mira a ver si esto te vale:

http://support.microsoft.com/kb/835454/en-us

Slds - Octavio


"RFOG" escribió en el mensaje
news:
... pero en hexadecimal.

Tengo un array de bytes con un número formateado en caracteres
hexadecimales:

"056E7FF" (imaginemos que es un array de byte).

Necesito convertir ese valor a un número decimal, es decir, meter su valor
en una variable númerica de tipo int.

La conversión mediante BitConverter no me funciona porque lo que hay en el
array no es realmente un número, si no el equivalente en ASCII.

La conversión pasando del array de bytes a string no me funciona porque en
lugar de ponerme la tira de bytes como una cadena me pone una cadena
describiendo la variable.

Imagino que hay algo evidente pero que no he sido capaz de encontrar, con
lo fácil que es en C++ nativo:

int num=atoi(array,16); //16 es la base.

Ya sé que puedo convertirlo "a mano", recorriendo cada byte y haciendo las
operaciones, pero tiene que haber algo en el .NET que lo haga.


Visita mi blog principal: http://rfog.blogsome.com
Y este sobre programación: http://geeks.ms/blogs/rfog
Libros, ciencia ficción y programación
> El secreto de aburrir a la gente consiste en decirlo todo.


Respuesta Responder a este mensaje
#2 Hernan
12/01/2007 - 11:47 | Informe spam
... pero en hexadecimal.

Tengo un array de bytes con un número formateado en caracteres
hexadecimales:

"056E7FF" (imaginemos que es un array de byte).

Necesito convertir ese valor a un número decimal, es decir, meter su valor
en una variable númerica de tipo int.



Antes que nada tienes que saber si esa representación del
entero es big o little endian.
http://es.wikipedia.org/wiki/Endianness

-H.
Respuesta Responder a este mensaje
#3 RFOG
12/01/2007 - 13:05 | Informe spam
¡¡Yes, Master!!

Aunque he tenido que pasar el array de byte a un string antes, pero como es
una lectura de un flujo encriptado, pues lo leo directamente y lo concateno
a un string.

Ya me parecía a mi que no hubiera nada de eso, lo estaba buscando en Convert
y en String, y ni se me había ocurrido mirarlo en la clase Int32.

Eres el primero entre los primeros. :-)
Visita mi blog principal: http://rfog.blogsome.com
Y este sobre programación: http://geeks.ms/blogs/rfog
Libros, ciencia ficción y programación
Nunca la persona llega a tal grado de perfección como cuando llena un
impreso de solicitud de trabajo.

"Octavio Hernandez" wrote in message
news:
Hola Rafa,

Mira a ver si esto te vale:

http://support.microsoft.com/kb/835454/en-us

Slds - Octavio


"RFOG" escribió en el mensaje
news:
... pero en hexadecimal.

Tengo un array de bytes con un número formateado en caracteres
hexadecimales:

"056E7FF" (imaginemos que es un array de byte).

Necesito convertir ese valor a un número decimal, es decir, meter su
valor en una variable númerica de tipo int.

La conversión mediante BitConverter no me funciona porque lo que hay en
el array no es realmente un número, si no el equivalente en ASCII.

La conversión pasando del array de bytes a string no me funciona porque
en lugar de ponerme la tira de bytes como una cadena me pone una cadena
describiendo la variable.

Imagino que hay algo evidente pero que no he sido capaz de encontrar, con
lo fácil que es en C++ nativo:

int num=atoi(array,16); //16 es la base.

Ya sé que puedo convertirlo "a mano", recorriendo cada byte y haciendo
las operaciones, pero tiene que haber algo en el .NET que lo haga.


Visita mi blog principal: http://rfog.blogsome.com
Y este sobre programación: http://geeks.ms/blogs/rfog
Libros, ciencia ficción y programación
>> El secreto de aburrir a la gente consiste en decirlo todo.






Respuesta Responder a este mensaje
#4 RFOG
12/01/2007 - 13:06 | Informe spam
No tiene nada que ver. Es una tira de bytes que contiene un valor ASCII que
representa un número legible por una persona que se va a convertir en un
número con una representación interna que no me interesa y que le dejo al
.NET.

De todos modos, gracias.

Visita mi blog principal: http://rfog.blogsome.com
Y este sobre programación: http://geeks.ms/blogs/rfog
Libros, ciencia ficción y programación
Nunca la persona llega a tal grado de perfección como cuando llena un
impreso de solicitud de trabajo.

"Hernan" wrote in message
news:
... pero en hexadecimal.

Tengo un array de bytes con un número formateado en caracteres
hexadecimales:

"056E7FF" (imaginemos que es un array de byte).

Necesito convertir ese valor a un número decimal, es decir, meter su valor
en una variable númerica de tipo int.



Antes que nada tienes que saber si esa representación del
entero es big o little endian.
http://es.wikipedia.org/wiki/Endianness

-H.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida