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:
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


Respuesta Responder a este mensaje
#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:
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:
> 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
>
>


Respuesta Responder a este mensaje
#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%
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:
> 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:
> > 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
> >
> >
>
>


Respuesta Responder a este mensaje
#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:
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%
> 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:
> > 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:
> > > 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
> > >
> > >
> >
> >
>
>


Respuesta Responder a este mensaje
#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:

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:
> 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%
> > 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:
> > > 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:
> > > > 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
> > > >
> > > >
> > >
> > >
> >
> >
>
>



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