Převod HEXa řetězce do byte()   otázka

VB.NET

Mám řetězec například "A02352C0" a chci ho převést do bytového pole. Je na to nějaká funkce ve VB?

Výsledkem by mělo být:

Dim Pole As Byte(4)

Pole(0) - 0xA0

Pole(1) - 0x23

Pole(2) - 0x52

Pole(3) - 0xC0

Díky

nahlásit spamnahlásit spam 0 odpovědětodpovědět
Public Shared Function StringToByteArrayFastest(hex As String) As Byte()
  If hex.Length Mod 2 = 1 Then
    Throw New Exception("The binary key cannot have an odd number of digits")
  End If
  Dim arr As New Byte((hex.Length >> 1) - 1)
  For i As Integer = 0 To (hex.Length >> 1) - 1
    arr(i) = CByte((GetHexVal(hex(i << 1)) << 4) + (GetHexVal(hex((i << 1) + 1))))
  Next
  Return arr
End Function

Public Shared Function GetHexVal(hex As Char) As Integer
  Dim val As Integer = AscW(hex)
  'For uppercase A-F letters:
  Return val - (If(val < 58, 48, 55))
  'For lowercase a-f letters:
  'return val - (val < 58 ? 48 : 87);
  'Or the two combined, but a bit slower:
  'return val - (val < 58 ? 48 : (val < 97 ? 55 : 87));
End Function

Možné řešení z http://stackoverflow.com/a/9995303, pravděpodobně také dostatečně výkonné.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback