Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: Fucko en 14 Junio 2011, 07:35 am



Título: ayuda con code de visual basic array byte a hexa
Publicado por: Fucko en 14 Junio 2011, 07:35 am
Hola, necesito leer datos desde un archivo en disco, y cargarlo a un array.... hasta ahí va bien......

puedo leer el archivo, pero necesito que se interprete el contenido del array como HEXAdecimal......

Código:
Private Sub Command1_Click()
Dim Item() As Byte
Open "C:\Fake.txt" For Binary Access Read Lock Read As #1
ReDim Item(LOF(1) - 1)
Get #1, , Item()
Close #1

End Sub
para interpretarlo como hexa, sería así.....

item(0) = &HDC

por ejemplo.....

alguna idea de como poder hacer eso???

gracias


Título: Re: ayuda con code de visual basic array byte a hexa
Publicado por: BlackZeroX en 14 Junio 2011, 07:44 am
.
Cada elemento de el array esta en base 10 solo debes convertirlo a hexadecimal:

http://es.wikipedia.org/wiki/Sistema_hexadecimal

hay varios códigos en el foro que hacen esto.

Dulces Lunas!¡.


Título: Re: ayuda con code de visual basic array byte a hexa
Publicado por: Fucko en 14 Junio 2011, 07:49 am
.
Cada elemento de el array esta en base 10 solo debes convertirlo a hexadecimal:

http://es.wikipedia.org/wiki/Sistema_hexadecimal

hay varios códigos en el foro que hacen esto.

Dulces Lunas!¡.

sisi, lo se... es lo que quiero hacer :D

tengo varios codes que convierten a hexa, los he podido usar si tomo los datos de un textbox o alguna variable, pero NO desde un array.... :S

no se me ocurre como hacerlo.......

un FOR quiza??

gracias

EDITO: lo que necesito es que el array quede cargado en hexadecimal.... necesito seguir teniendo el array, pero que los datos sean interpretados como HEXA


Título: Re: ayuda con code de visual basic array byte a hexa
Publicado por: Fucko en 14 Junio 2011, 19:23 pm
quiza no me expliqué bien.... mejor pongo un ejemplo....


supongamos que tengo dentro del archivo estos datos: 01 22 33 44

este code me lo carga como:
item(0)= 01
item(1)= 22
item(3)= 33
item(4)= 44

en el array, y yo necesitaría que sea así:

item(0)= &H01
item(1)= &H22
item(3)= &H33
item(4)= &H44

como puedo hacer?

si o si tiene que ser BYTE ARRAY....


Título: Re: ayuda con code de visual basic array byte a hexa
Publicado por: BlackZeroX en 14 Junio 2011, 20:38 pm
.
Haber si entiendo quieres pasar TODO de tu array byte a un array que contenga numeros en hexadecimal?, si es eso no necesitas el array byte sino seria un array string, ya que el hexadecimal es un numero pero alfanumérico mas no numérico de manera explicita.

es decir el byte es para NÚMEROS de intervalo cerrado [0-255] mientras que el String es para texto, números, símbolos, etc y es la mejor opción para los números hexadecimales.

aun que hay otra opción que es crear un modulo de clase y encapsular una funcion que te retorne un numero del array byte en Hexa, pero eso seria una exageración para algo tan trivial.

P.D.: Un Array es una sucesión Finita de variables de un mismo tipo que se distinguen por la posición en memoria una tras otra y son invocadas por indices de una declaración con un mismo nombre, de modo que si sabes hacerlo para una variable y un textbox sabrás hacerlo en un array.

Dulces Lunas!¡.


Título: Re: ayuda con code de visual basic array byte a hexa
Publicado por: Fucko en 14 Junio 2011, 21:01 pm
claro, te entiendo.....

te explico bien.... usb en visual basic, se puede mediante LIBUSB y no se cual otro....
pero no podes enviar un string, porque llega al dispositivo de otra manera.... lo mismo que en puerto com, si envias un caracter hexa como string, no funciona, sino que tenes que enviarlo como char, así envia hexa....

adjunto mi code, de un comando corto a enviar por usb....

en comandos cortos, no es problema, ya que el array lo creo yo, como vas a ver....
pero hay comandos de 132 bytes, otros de 400..... y no sería viable cargar todo el array a mano.... por eso quiero leerlo desde disco y cargarlo....

Código:
msgbox("solucionado")


entonces, si yo cargo el array desde disco con el codigo del primer post, no me sirve, ya que no queda como "&H"

si leo un archivo con el contenido FB 3C 01 08 33 44 11 65 74 AC 7F que sería el comando de arriba, el code no me sirve.....
en lugar de escribir FB 3C 01 08 33 44 11 65 74 AC 7F me escribe 46 42 33 43 30 31 30 38 33 33 34
ese es el problema.... definiendo yo el array, no hay problema, leyendo los datos desde el disco, y cargandolo, me escribe 46 42 33 43 30 31 30 38 33 33 34


gracias


Título: Re: ayuda con code de visual basic array byte a hexa
Publicado por: Fucko en 14 Junio 2011, 21:24 pm
creo que lo solucioné.....
cargando el fake.txt como ascii

con eso ya está :D

gracias, pueden cerrar.


Título: Re: ayuda con code de visual basic array byte a hexa
Publicado por: raul338 en 14 Junio 2011, 22:55 pm
No entendi bien tu solucion, pero a la hora de mostrar los datos, puedes usar la funcion Hex$

Código
  1. For i = 0 to 255
  2.    Debug.Print Hex$(i)
  3. Next
  4.  

Te salen de 0 a FF respectivamente :P


Título: Re: ayuda con code de visual basic array byte a hexa
Publicado por: Fucko en 15 Junio 2011, 02:40 am
Si Raul, lo se, igual que que si lo quiero ver unicode
Código:
Debug.Print StrConv(Item(), vbUnicode)

pero con esto, solo lo puedo visualizar.... no puedo usar el contenido del array como si fuera hexa....
igualmente, está solucionado :)



Título: Re: ayuda con code de visual basic array byte a hexa
Publicado por: raul338 en 15 Junio 2011, 03:43 am
Todavia no entiendo porque diferencias en "usar" como si fuese hexa, la interpretacion para el procesador es la misma, para nosotros tal vez sea distinta :P
Código
  1. 'string Hexa a byte
  2. miByte = Val("&H" & "FF") ' FF puede ser text1.text, etc
  3. 'byte a Hexa
  4. miString = Hex$(255) ' puedes agregar al principio &H o 0x
  5.  

:P


Título: Re: ayuda con code de visual basic array byte a hexa
Publicado por: Fucko en 15 Junio 2011, 06:09 am
Si, lo se.... yo tampoco lo entiendo......

si envio FB 3C 01 al usb, me escribe 46 42 33

tengo que enviarlo como &HFB &H3C &H1 para que lo escriba

FB 3C 01 en el usb......

es la única manera que encontré....
al menos funciona XD