Pasar Archivo a Arreglo de Bytes

1,019 views
Skip to first unread message

Tlacuilo

unread,
Sep 3, 2012, 7:18:35 PM9/3/12
to publice...@googlegroups.com
Buen día a todos en el foro...

Tengo un archivo *.Key que necesito pasar a un arreglo de bytes...en C# se usa la funcion Byte[]...en visual foxpro hay algun comando parecido???..o alguna forma de llegar al mismo resultado???...estoy utilizando VFP 7

Gracias y Saludos!!!!!!

Victor Espina

unread,
Sep 3, 2012, 8:04:54 PM9/3/12
to publice...@googlegroups.com
Esto deberia servir:

cBuff = FILETOSTR("miarchivo.key")
DIMENSION aBuffer[LEN(cBuff)]
FOR i = 1 TO LEN(cBuff)
 aBuffer[i] = ASC(SUBS(cBuff,i,1))
ENDFOR

Ahora, es importante destacar una diferencia fundamental aqui entre VFP y C#. En C#, cuando tu haces:

byte[] aBuffer = new byte[1024];

Estas creando una variable tipo array que ocupa 1024 bytes en la memoria.  Cuando haces esto en VFP:

DIMENSION aBuffer[1024]

Estas creando una variable tipo array que ocupa mucho mas que 1024 bytes, pues cada elemento en el array es un tipo VARIANT.  

Por lo tanto, si lo que necesitas es operar sobre los bytes individuales del archivo, el codigo que indique arriba deberia servir.  Si lo que necesitas es pasar ese valor a alguna funcion q esta esperando un array o un stream de bytes, entonces lo puedes intentar es pasar directamnte una referencia a "cBuff", ya que en C las cadenas son almacenadas como array de bytes.   No se si funcionara, pero intentar no cuesta nada :)

Saludos

Victor Espina




Saludos

Victor Espina

Tlacuilo

unread,
Sep 4, 2012, 11:16:03 AM9/4/12
to publice...@googlegroups.com
Buen día Victor...

Tu ejemplo funciona perfectamente...es al resultado que necesitaba llegar...pero el problema es que lo tengo que mandar a un webservice por el metodo GET y me dice que no lo puede convertir...me imagino que es por la diferencia que tambien me mencionas. Disculpa mi ignorancia pero no entendi lo de pasar directamente una referencia a "cBuff"...podrias darme un ejemplo de como hacer esto para probarlo?.

De antemano muchisimas gracias por tu tiempo y por compartir tu conocimiento.

Victor Espina

unread,
Sep 4, 2012, 2:15:30 PM9/4/12
to publice...@googlegroups.com
Pasale directamente cBuff en lugar de aBuffer. Si tienes suerte, el GET vera el string como un array de bytes o al menos podra hacer la conversion.  

Victor Espina
Reply all
Reply to author
Forward
0 new messages