2016-06-24 12 views
1
Dim data As String = "c80378b8" 

Dim bytes As Byte() = System.Text.RegularExpressions.Regex.Matches(Me.data.Substring, ".{2}").Select(Function(x) x.Value).ToArray() 

Fehler 1Hex byteArray

Overload resolution failed because no accessible 'Substring' accepts this number of arguments 

Ich mag den Hex-String in den data Variable (2 Zeichen zur gleichen Zeit) lesen und dann dieser Wert (dezimal) als binär gespeichert werden Format (Bytes) in bytes. Aber es erzeugt einen Über-Fehler, was ist falsch daran und was ist die richtige Methode? Gibt es eine Alternative zu diesem Liner?

Antwort

1

versuchen, etwas wie folgt aus:

Imports System.Globalization 

Sub Main() 
    Dim data As String = "c80378b8" 
    Dim bytes As Byte() = BitConverter.GetBytes(Long.Parse(data, NumberStyles.AllowHexSpecifier)) 
End Sub 

Dieser Code analysiert zuerst die Hex-String auf eine lange und bekommt dann die Bytes für sie. Die Analyse schlägt fehl, wenn die Zeichenfolge keine Hexadezimalzeichenfolge ist. Möglicherweise möchten Sie diesen Code in eine Methode einfügen, damit Sie diese Möglichkeit berücksichtigen können.

EDIT:

Wenn Sie Strings länger als eine lange Variable umwandeln müssen halten wird, können Sie die BigInteger Klasse. Fügen Sie einen Verweis auf System.Numerics

Imports System.Numerics 
Imports System.Globalization 

Sub Main() 
    Dim data As String = "4845484848484848484848484848484848484848484848484848484848484848" 
    Dim bigI As BigInteger = BigInteger.Parse(data, NumberStyles.AllowHexSpecifier) 
    Dim bytes As Byte() = bigI.ToByteArray() 
End Sub 
+0

'@ Chris' nein, nicht den Code nicht mit längeren String arbeiten wie' „4845484848484848484848484848484848484848484848484848484848484848“ ' –

+0

@ Pretty_Girl5 - Ihre Frage nicht gesagt, dass Sie Saiten haben, die Größe . Ich konnte die Frage nur anhand der von Ihnen bereitgestellten Informationen beantworten. –