ayuda con code de visual basic array byte a hexa

Iniciado por Fucko, 14 Junio 2011, 07:35 AM

0 Miembros y 1 Visitante están viendo este tema.

Fucko

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

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
Cree en los que buscan la verdad, duda de los que la han encontrado...

BlackZeroX

.
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!¡.
The Dark Shadow is my passion.

Fucko

#2
Cita de: 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!¡.

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
Cree en los que buscan la verdad, duda de los que la han encontrado...

Fucko

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....
Cree en los que buscan la verdad, duda de los que la han encontrado...

BlackZeroX

.
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!¡.
The Dark Shadow is my passion.

Fucko

#5
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....


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
Cree en los que buscan la verdad, duda de los que la han encontrado...

Fucko

creo que lo solucioné.....
cargando el fake.txt como ascii

con eso ya está :D

gracias, pueden cerrar.
Cree en los que buscan la verdad, duda de los que la han encontrado...

raul338

No entendi bien tu solucion, pero a la hora de mostrar los datos, puedes usar la funcion Hex$

Código (vb) [Seleccionar]

For i = 0 to 255
    Debug.Print Hex$(i)
Next


Te salen de 0 a FF respectivamente :P

Fucko

Si Raul, lo se, igual que que si lo quiero ver unicode
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 :)

Cree en los que buscan la verdad, duda de los que la han encontrado...

raul338

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 (vb) [Seleccionar]

'string Hexa a byte
miByte = Val("&H" & "FF") ' FF puede ser text1.text, etc
'byte a Hexa
miString = Hex$(255) ' puedes agregar al principio &H o 0x


:P