Conversión de datos

05/11/2007 - 17:47 por Catalin Lungu | Informe spam
Hola a todos. Me puede echar alguien una mano con lo siguiente. Es que he
hecho la siguiente función

public static string Hex2DecimalString(byte[] hexString)
{
double dbl = 0;
for (int k = 0; k < hexString.Length; k++)
{
dbl += hexString[k] * Math.Pow(256, hexString.Length - 1 - k);
}
long lng = Convert.ToInt64(dbl);
string aaa = lng.ToString("D10");
return aaa;
}

y subi los resultados a una base de datos. Quiero decir que ya no tengo el
array de bytes que le pase a la función. El tema es que tengo que hacer otra
conversión porque esta no me vale. Lo que necesito es hacer el inverso de
está función y ya no se como para rescatar lo que le pase a la función y
hacer la conversión bien. Algo asi

public byte[] DecimalString2Hex(string dato)
{
}


Muchas gracias de antemano,
C.

Preguntas similare

Leer las respuestas

#1 Sashka
06/11/2007 - 03:08 | Informe spam
http://www.elguille.info/NET/vs2005...ricas.aspx

Sashka

"Catalin Lungu" escribió en el mensaje
news:e%
Hola a todos. Me puede echar alguien una mano con lo siguiente. Es que he
hecho la siguiente función

public static string Hex2DecimalString(byte[] hexString)
{
double dbl = 0;
for (int k = 0; k < hexString.Length; k++)
{
dbl += hexString[k] * Math.Pow(256, hexString.Length - 1 - k);
}
long lng = Convert.ToInt64(dbl);
string aaa = lng.ToString("D10");
return aaa;
}

y subi los resultados a una base de datos. Quiero decir que ya no tengo el
array de bytes que le pase a la función. El tema es que tengo que hacer
otra conversión porque esta no me vale. Lo que necesito es hacer el
inverso de está función y ya no se como para rescatar lo que le pase a la
función y hacer la conversión bien. Algo asi

public byte[] DecimalString2Hex(string dato)
{
}


Muchas gracias de antemano,
C.


Respuesta Responder a este mensaje
#2 Catalin Lungu
06/11/2007 - 11:40 | Informe spam
No estoy muy seguro que lo que me dices me vale o no lo veo yo.

Mira si a la función le paso el siguiente array de bytes 80, 36, 159, 22 el
resultado es 1344577301. Solamente teniendo este numero y la relación entre
ellos

A*(256*256*256) + B*(256*256) + C*(256) + D = 1344577301 me parece que va a
ser imposible. Es muy raro que una función tan comun de conversión no tenga
una inversa, pero por la logica no le veo solución.

Muchas gracias.
Respuesta Responder a este mensaje
#3 Sashka
06/11/2007 - 16:09 | Informe spam
Es que de donde sacaste tu función??
Mira, si usas las funciones de
acahttp://www.codeproject.com/cshar...coding.asp

string ss =HexEncoding.ToString(new byte[] { 80, 36, 159, 22 });
El resultado es : 50249F16

Y...
byte[] byteArray = HexEncoding.GetBytes(hexString, out discarded);
Te devuelve byte[] { 80, 36, 159, 22 }

Igualmente... si usas estas funciones.
http://www.codekeep.net/snippets/0d...5b436.aspx
El resultado es el mismo

Con las funciones del Guille ;

string ss = Conversor.ToNumBase("1344577301", 16).ToString(); = 50249F16

string sss = Conversor.FromNumBase("50249F16 ", 16).ToString(); = 1344577301



Sashka

"Catalin Lungu" escribió en el mensaje
news:%
No estoy muy seguro que lo que me dices me vale o no lo veo yo.

Mira si a la función le paso el siguiente array de bytes 80, 36, 159, 22
el resultado es 1344577301. Solamente teniendo este numero y la relación
entre ellos

A*(256*256*256) + B*(256*256) + C*(256) + D = 1344577301 me parece que va
a ser imposible. Es muy raro que una función tan comun de conversión no
tenga una inversa, pero por la logica no le veo solución.

Muchas gracias.


Respuesta Responder a este mensaje
#4 Catalin Lungu
07/11/2007 - 11:31 | Informe spam
Bueno el tema es el siguiente. Como todos los arrays de bytes pasaron por
esta función
public static string Hex2DecimalString(byte[] hexString)
{
double dbl = 0;
for (int k = 0; k < hexString.Length; k++)
{
dbl += hexString[k] * Math.Pow(256, hexString.Length - 1 - k);
}
long lng = Convert.ToInt64(dbl);
string aaa = lng.ToString("D10");
return aaa;
}

lo que tengo ahora es una base de datos con numeros double en formato
string.

Hize otra función que se supone que es la inversa y me rescata los arrays.
Podrias echarle un vistazo a ver que te parece. He hecho pruebas y parece
que va bien pero no estoy totalmente seguro.

public static byte[] DecimalString2Hex(Int64 numero)
{
byte[] hexString = new byte[4];
for (int k = 0; k < hexString.Length; k++)
{
hexString[k] = Convert.ToByte(Math.Floor(numero / Math.Pow(256,
hexString.Length - 1 - k)));
numero = Convert.ToInt64(Math.Floor(numero % Math.Pow(256,
hexString.Length - 1 - k)));
}
return hexString;
}

Un saludo,
C.
Respuesta Responder a este mensaje
#5 Sashka
07/11/2007 - 17:49 | Informe spam
Efectivamente, parece que funciona bien

Sashka

"Catalin Lungu" escribió en el mensaje
news:
Bueno el tema es el siguiente. Como todos los arrays de bytes pasaron por
esta función
public static string Hex2DecimalString(byte[] hexString)
{
double dbl = 0;
for (int k = 0; k < hexString.Length; k++)
{
dbl += hexString[k] * Math.Pow(256, hexString.Length - 1 - k);
}
long lng = Convert.ToInt64(dbl);
string aaa = lng.ToString("D10");
return aaa;
}

lo que tengo ahora es una base de datos con numeros double en formato
string.

Hize otra función que se supone que es la inversa y me rescata los arrays.
Podrias echarle un vistazo a ver que te parece. He hecho pruebas y parece
que va bien pero no estoy totalmente seguro.

public static byte[] DecimalString2Hex(Int64 numero)
{
byte[] hexString = new byte[4];
for (int k = 0; k < hexString.Length; k++)
{
hexString[k] = Convert.ToByte(Math.Floor(numero / Math.Pow(256,
hexString.Length - 1 - k)));
numero = Convert.ToInt64(Math.Floor(numero % Math.Pow(256,
hexString.Length - 1 - k)));
}
return hexString;
}

Un saludo,
C.


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