Conversion de datos

28/11/2006 - 16:30 por Catalin Lungu | Informe spam
Hola,
A ver si me puede aclarar alguien sobre una duda que tengo sobre la
conversion de un entrero a un array de bytes. Se supone que un System.Int32
ocupa 4 bytes en memoria y un entero tiene un rango -2,147,483,648 a
2,147,483,647
Cual seria la representación de este entero en los 4 bytes. Para strings lo
hago asi:

public static byte[] ConvertStringToByteArray(string stringToConvert)
{
return (new UTF8Encoding()).GetBytes(stringToConvert);
}

pero para enteros, doubles, datetime no se hacerlo.

Es que tengo que escribir un monton de cosas 256 bytes de memoria de una
smartcard.

Gracias,
C.

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
28/11/2006 - 17:12 | Informe spam
"Catalin Lungu" wrote in message
news:
A ver si me puede aclarar alguien sobre una duda que tengo sobre la
conversion de un entrero a un array de bytes. Se supone que un
System.Int32 ocupa 4 bytes en memoria y un entero tiene un
rango -2,147,483,648 a 2,147,483,647
Cual seria la representación de este entero en los 4 bytes. Para strings
lo hago asi:

public static byte[] ConvertStringToByteArray(string stringToConvert)
{
return (new UTF8Encoding()).GetBytes(stringToConvert);
}

pero para enteros, doubles, datetime no se hacerlo.

Es que tengo que escribir un monton de cosas 256 bytes de memoria de una
smartcard.



Una idea: Crea un MemoryStream y escribe sobre él con un BinaryWriter. El
método Write del BinaryWriter está sobrecargado y acepta los varios tipos
que quieres escribir:

byte[] arraydebytes = new byte[256];
MemoryStream ms = new MemoryStream(arraydebytes);
BinaryWriter bw = new BinaryWriter(ms, Encoding.UTF8);
bw.Wrtite(stringToConvert);
bw.Write(entero);
bw.Write(doble);
...
bw.Close();
Respuesta Responder a este mensaje
#2 Alberto Poblacion
28/11/2006 - 18:59 | Informe spam
"Catalin Lungu" wrote in message
news:
A ver si me puede aclarar alguien sobre una duda que tengo sobre la
conversion de un entrero a un array de bytes. Se supone que un
System.Int32 ocupa 4 bytes en memoria y un entero tiene un
rango -2,147,483,648 a 2,147,483,647
Cual seria la representación de este entero en los 4 bytes. Para strings
lo hago asi:

public static byte[] ConvertStringToByteArray(string stringToConvert)
{
return (new UTF8Encoding()).GetBytes(stringToConvert);
}

pero para enteros, doubles, datetime no se hacerlo.

Es que tengo que escribir un monton de cosas 256 bytes de memoria de una
smartcard.



Lo que te he dicho antes en otro mensaje, de usar un BinaryWriter, es
útil si tienes que ir salvando muchas cosas una detrás de otra, pero si solo
quieres convertir una sola variable en un array de bytes, tienes todas las
conversiones en la clase System.BitConverter.
Respuesta Responder a este mensaje
#3 Catalin Lungu
29/11/2006 - 11:06 | Informe spam
Muchas gracias Alberto,

Lo de usar un BinaryWriter me gusta pero el problema es que no quiero
escribir los datos seguidos. Puedo escribir a partir de una tal posicion?

Saludos,
C.



"Alberto Poblacion"
escribió en el mensaje news:
"Catalin Lungu" wrote in message
news:
A ver si me puede aclarar alguien sobre una duda que tengo sobre la
conversion de un entrero a un array de bytes. Se supone que un
System.Int32 ocupa 4 bytes en memoria y un entero tiene un
rango -2,147,483,648 a 2,147,483,647
Cual seria la representación de este entero en los 4 bytes. Para strings
lo hago asi:

public static byte[] ConvertStringToByteArray(string stringToConvert)
{
return (new UTF8Encoding()).GetBytes(stringToConvert);
}

pero para enteros, doubles, datetime no se hacerlo.

Es que tengo que escribir un monton de cosas 256 bytes de memoria de una
smartcard.



Lo que te he dicho antes en otro mensaje, de usar un BinaryWriter, es
útil si tienes que ir salvando muchas cosas una detrás de otra, pero si
solo quieres convertir una sola variable en un array de bytes, tienes
todas las conversiones en la clase System.BitConverter.



Respuesta Responder a este mensaje
#4 Alberto Poblacion
29/11/2006 - 11:56 | Informe spam
"Catalin Lungu" wrote in message
news:
Lo de usar un BinaryWriter me gusta pero el problema es que no quiero
escribir los datos seguidos. Puedo escribir a partir de una tal posicion?



Puedes usar la función Seek del MemoryStream para posicionarte en
cualquier punto del buffer y la siguiente escritura se realiza en esa
posición.
Respuesta Responder a este mensaje
#5 Catalin Lungu
29/11/2006 - 13:09 | Informe spam
Gracias otra vez.

"Alberto Poblacion"
escribió en el mensaje news:%
"Catalin Lungu" wrote in message
news:
Lo de usar un BinaryWriter me gusta pero el problema es que no quiero
escribir los datos seguidos. Puedo escribir a partir de una tal posicion?



Puedes usar la función Seek del MemoryStream para posicionarte en
cualquier punto del buffer y la siguiente escritura se realiza en esa
posición.



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