Hexwaardes inlezen via VB

Status
Niet open voor verdere reacties.

Jan Van Haaren

Gebruiker
Lid geworden
27 okt 2002
Berichten
202
Hoi!

Ik zit (weeral ja) met een probleem. Ik probeer de hex waardes uit een bestand te lezen, maar dat werkt niet zoals ik het wens. Ik gebruik deze code:

Code:
Private Sub cmdGet_Click()
Dim read As String * 4

Open "test.db" For Binary As #1
Get #1, 33, read
Close #1

txtData.Text = read
End Sub

Mijn output in txtData is dan "FEFE". Zie ook onderstaande screenshot.

screen1.jpg


Dit klopt in principe wel, ware het niet dat ik er voor wil zorgen dat ik de hexadecimale waarde van "FEFE" in txtData wil krijgen, dus "4645". Hoe valt dit op te lossen?

Dank bij voorbaat, Jan
 
jan,

je zegt dat je '4645' wilt als resultaat. dit is de hex-waarde voor 'FE' en niet voor 'FEFE'

ik weet niet of je 't nou 2 of 4 bytes wilt als uitkomst. voor 2 bytes gebruik je in plaats van string een integer en voor 4 bytes een long. daarna zet je ze om naar hex met de functie hex()

--------------------------------------------
Private Sub cmdGet_Click()
Dim read As integer 'of dus: Dim read As long

Open "test.db" For Binary As #1
Get #1, 33, read
Close #1

txtData.Text = Hex(read)
End Sub
--------------------------------------------
:)
 
Laatst bewerkt:
Hoi, bedankt. Inderdaad, was een klein denk -en typfoutje. Maar het werkt! Is het ook mogelijk om alleen "4" of "46" in te lezen? Hoe je "4645" en "4645 4645" inleest weet ik nu ;).

/edit

"46" heb ik net gevonden, dat kan via:
Code:
Dim read As Byte
 
Laatst bewerkt:
alleen 4 kun je niet krijgen door het gegevenstype aan te passen. je leest een byte tegelijk en gooit dan met de left-bewerking de lage 4 bits eraf:

--------------------------------------------
Private Sub cmdGet_Click()
Dim read As byte

Open "test.db" For Binary As #1
Get #1, 33, read
Close #1

txtData.Text = Left(Hex(read), 1)
End Sub
--------------------------------------------

de visual basic compiler zal dit converteren naar machinetaal-instructies als 'shr' (shift right) of 'ror' (rotate right).
:o
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan