[VB6]Hexa-dezimal in Bytearray umwandeln

Jens2

Grünschnabel
Hallo zusammen,
Ich habe folgendes Problem:
Ich muss eine Reihe von Hexa-dezimalen Zahlen in ein Byte array tun, um dieses als Packet ins Netzwerk zu geben.
Ich kann zwar ein Byte-Array auslesen und als Hexa- bzw Char Wert wiedergeben, aber eine Hexa- nach Byte Funktion kann ich nirgendwo finden.
Ich hoffe nun das mir hier geholfen werden kann.
also angenommen ich habe die Hexa-Zahlen

00 0F B5 7A 5A 50 00 16 17 6B 11 7D 08 00 45 00

und möchte diese nun im Byte-array bytearray() speichern , welsche Funktion könnt ihr mir empfehlen?
Mittels StrConv kan ich zwar soetwas mit Strings machen, aber StrConv lässt die "00" Werte, bzw das was als ascii Zeichen dazugehört einfach weg.
Und eine Macadresse der einfach mal eine Oktette fehlt ist nicht schön ....

Ich hoffe jemand kann mir helfen (auf pscode war nichts dergleichen zu finden).

mfg
Jens
 
Die Conversion-Funktionen (z.B. "CInt") interpretieren Werte als Hexadezimalzahlen, wenn du ihnen die Zeichenfolge "&H" mit übergibst.
Visual Basic:
Dim b as Byte
Dim sHex as string
sHex = "6B"
b = CByte("&H" & sHex)
Nun sollte in "b" der Wert "107" drin stehen.
 
Hallo,
Danke für die Antwort.
Allerdings habe ich jetzt ein Problem mit dem Array selber:

Code:
Dim bbyte() As Byte
Dim vbyte As Byte
On Error Resume Next
Text2.Text = hexarray(lv.SelectedItem.Index)
Dim ss() As String
Dim blub As Variant
ss() = Split(Text2.Text, " ")
Text1 = ""
i = 0

 'MsgBox "Schleife hex to dec"
While i < UBound(ss)
Text1 = Text1 & Chr(HexToDec(ss(i)))
vbyte = CByte("&H" & ss(i))
bbyte(i) = vbyte

i = i + 1
Wend

'MsgBox "bin to hex2"
Dim lbyte As Variant
MsgBox UBound(bbyte)
sdata = ""
  Dim nPosition, nColumns As Integer
  nColumns = 16
  For Each lbyte In bbyte
    If nPosition = 8 Then
      sdata = sdata + " "
    End If
    If nPosition >= nColumns Then
      sdata = sdata + vbCrLf: nPosition = 1
    Else
      nPosition = nPosition + 1
    End If
    If lbyte <= &HF Then
      sdata = sdata + "0"
    End If
    sdata = sdata + Hex(lbyte) + " "
  Next
Text5 = sdata

text2 (hexarray) wird eine hexa-dezimalfolge zugewiesen, die auch so funktioniert und das packet repräsentiert.

Die umwandlug nach Char funktioniert auch Einwandfrei.

aber dann wenn ich das ganze wieder in bytes und anschließend in hexa (zur kontrolle ob die bytes richtig sind) umwandle, krige ich als ergebniss immer nur "00" raus.

Ich verstehe nicht warum, soweit ich weiss müsste das array nunmal jetzt die entsprechenden bytes beinhalten.

achja: der Hexa-code aus hexarray wurde mit der selben funktion erstellt wie die, um das byte auszulesen.

daran kan es nicht liegen.

mfg
Jens


edit: habs hinbekommen.
ich weiss nicht was ich nun anders gemacht habe, aber hiermit hats geklappt:


Dim ss() As String
Dim bytea() As Byte
Dim zeichen As String
Dim readstring As String
readstring = Text1.Text
readstring = Replace(readstring, " ", " ")
readstring = Replace(readstring, vbCrLf, " ")

ss() = Split(readstring, " ")
ReDim bytea(UBound(ss) - 2)

i = 0
While i < UBound(ss)
zeichen = ss(i)
If zeichen <> "" Then
'MsgBox zeichen
bytea(i) = CByte("&H" & zeichen)
End If
i = i + 1
Wend
MsgBox UBound(bytea)
Dim sdata As String
For Each vbyte In bytea
zeichen = Hex(vbyte)
If Len(zeichen) = 1 Then zeichen = "0" & zeichen
sdata = sdata & " " & zeichen
Next

Label1 = sdata


danke für die hilfe

mfg
Jens
 
Zuletzt bearbeitet:
Zurück