ARRAY DE BYTE[]

26/01/2005 - 14:23 por Ivan | Informe spam
Hola a todos,

Tengo un problema y no se como puedo solucionarlo, vereis:

Tengo un string muy grande con una serie de numeros separados por "-" y lo
que quiero es declararme una variable byte [] para meter estos valores. He
intentado varias cosas, con el Convert.to. con el Encoding y nada. El
convert.to me convertiría mis valores a byte y no quiero que me modifique
mis valores de mi string porque esos valores que tengo en el string ya son
bytes, lo único que quiero es meterlos en un array de bytes.

¿Es esto posible?, ¿puede alguien ayudarme?

Gracias por la atención

IVAN

Preguntas similare

Leer las respuestas

#1 Pedro Luna Montalvo, MVP
26/01/2005 - 14:31 | Informe spam
No hay un metodo directo que haga esto (hasta donde conozco del Framework),
pero un metodo como el que sigue te puede ayudar:

public byte[] ConvertirStringArregloByte(string cadena) {
string[] tokens = cadena.Split('-'); // asumo que los bytes estan
separados por -
byte[] bytes = new byte[tokens.Length];

for(int i = 0; i < tokens.Length; i++) {
bytes[i] = Convert.ToByte(tokens[i], 16);
}

return bytes;
}

y prueba con las siguientes llamadas:

string prueba = "12-aa-3e-5d-67-9c-1f-ff-fa";
byte[] resultado = ConvertirStringArregloByte(prueba);


Saludos
Pedro Luna, [MVP VB.NET]
Gye, Ecu

"Ivan" escribió en el mensaje
news:
Mostrar la cita
#2 Ivan
26/01/2005 - 14:54 | Informe spam
Esto ya lo probé.

El problema que tiene esto que es que calcula el byte de string que va
cogiendo.
Yo no quiero que me calcule el byte del string que vaya cogiendo entre el
separador, quiero que me inserte el valor que encuentre en el separador,
porque el valor que quiero ir insertando ya es un byte, lo que pasa es que
los valores están en una cadena separados por "-".

Gracias por la rapidez de la respuesta.






"Pedro Luna Montalvo, MVP" escribió en
el mensaje news:
Mostrar la cita
Framework),
Mostrar la cita
lo
Mostrar la cita
He
Mostrar la cita
modifique
Mostrar la cita
son
Mostrar la cita
#3 Pedro Luna Montalvo, MVP
26/01/2005 - 14:58 | Informe spam
Pos si pones un ejemplo de lo que quieres hacer, tal vez entienda mejor.
Mira que en el ejemplo uso Convert.ToByte(valor, 16), y no un simple
Convert.ToByte(valor)


Saludos
Pedro Luna, [MVP VB.NET]
Gye, Ecu

"Ivan" escribió en el mensaje
news:%23%
Mostrar la cita
en
Mostrar la cita
estan
Mostrar la cita
y
Mostrar la cita
valores.
Mostrar la cita
#4 Ivan
26/01/2005 - 15:33 | Informe spam
string cadena "C2-D0-B5-B1-37-74-D8-E8-19-8B-36-0D-EE-E2-2E-35-FA-2E-58-93-3A-9D-68-C5-31-
76-A9-FB-2C-9F-EB-2E-91-16-20-C1-EE-31-A7-F2-C7-D0-AC-6C-67-5B-4B-86-CA-AF-0
D-69-51-E0-61-7F-87-C4-63-7A-8B-FF-C7-02-B3-74-9C-05-F9-51-29-99-46-DB-12-56
-AA-4A-AF-41-3D-8B-E7-F4-AE-AF-9F-8C-35-06-34-CE-68-85-F4-89-19-5A-42-02-89-
0A-FA-37-5F-6C-96-05-F4-12-89-AA-90-F5-4E-71-5C-4F-A2-6C-9D-07-75-AA-44-D8-8
4-69";

byte [] arrDatos;


¿Como guardo cada valor de la cadena separandolo por "-" dentro del array de
byte[] sin que me modifique los valores para que; por ejemplo; el
arrDatos[1] = C2?

Gracias de nuevo por la atención

IVAN




"Pedro Luna Montalvo, MVP" escribió en
el mensaje news:
Mostrar la cita
el
Mostrar la cita
que
Mostrar la cita
escribió
Mostrar la cita
"-"
Mostrar la cita
El
Mostrar la cita
ya
Mostrar la cita
#5 William
26/01/2005 - 16:25 | Informe spam
Hola Ivan...

Veamos a ver si te puedo ayudar un poco...

Tienes una cadena mas o menos con el siguiente formato...

MiCadena = "C2-D0-B5-B1-37-74-D8-E8-19-8B-36-0D-EE-E2-2E-35-FA-2E-58-93-3A-9D"

Quieres sacar cada uno de los valores independientes.
Para ello, sugiero un split, que te entregará un arreglo de string con los
valores únicos

string[] MyValues = MiCadena.Split(new char[] {45})

Esto te separará los valores en un arreglo de string[] te quedaría algo como:

MyValues[0] = "C2";
MyValues[1] = "D0";
MyValues[2] = "B5";
MyValues[3] = "B1";
. etc...

Ahora aca viene lo bueno, supongo que esto de antes ya lo habras hecho o por
lo menos tomado en consideración.

Quieres meter cada uno de esos valores, los cuales representan un código
Hexadecimal en un arreglo de bytes, para realizar esto deberás de convertir
cada valor a su respectivo valor decimal y con ello crear el arrglo, para
ello he creado una función que me permite convertir de una cadena al valor
entero del hexadecimal que representa...

private int HexToInt(string Hexadecimal)
{
double[] nValues = new double[16];
nValues[0] = 0;
nValues[1] = 16;
for(int xCount = 2; xCount < nValues.Length; xCount++)
nValues[xCount] = 16 * nValues[xCount-1];

int nAcumulador = 0;
bool InvalidCaracter = false;

for(int nCounter = 0; nCounter < Hexadecimal.Length; nCounter++)
{
char nChar = Hexadecimal[nCounter];
int nMount = 0;
if(char.IsNumber(nChar))
{
nMount = int.Parse(nChar.ToString());
}
else
{
if(nChar >= 65 && nChar <= 70)
nMount = ((int) nChar) - 55;
else
InvalidCaracter = true;
}

if(!InvalidCaracter)
{
nAcumulador += nMount * nValues[(Hexadecimal.Length -1) - nCounter];
if(nValues[(Hexadecimal.Length -1) - nCounter] == 0)
nAcumulador += nMount;
}
}
return nAcumulador;
}

Teniendo esta función que nos permite hacer la conversión, sólo nos queda
usarla y llenar nuestro arreglo de bytes.

algo así como:

bytes[] MyBytes = new bytes[MyValues.Length];
for(int xCount = 0; xCount < MyBytes.Length; xCount++)
MyBytes[xCount] = HexToInt(MyValues[xCount]);

Espero que pueda ayudarte en algo´.
Saludos Cordiales

William Fernandez

PD: Existe una función en el .NET Framework para convertir directamente un
string a un arreglo de Bytes, System.Text.Encoding.Default.GetBytes()

"Ivan" wrote:

Mostrar la cita
Ads by Google
Search Busqueda sugerida