2017-07-28 6 views
0

Ich habe ein String-ArrayKonvertieren von String-Array in Hexadezimal-Array

Receivedbyte[0]=5A 
Receivedbyte[1]=3A 
Receivedbyte[2]=7A 
Receivedbyte[3]=60 

Ich möchte, dass sie als Hex-Zahlen behandeln und jeweils den Wert von 0x20 xor. , also möchte ich meine Daten 0x5A^0x20 an der 0. Stelle sein. und so weiter.

Ich versuchte Folgendes, aber ein Fehler kommt, der besagt, dass die Eingabezeichenfolge nicht im richtigen Format ist.

static public string[] escapeFix(string[] Receivedbyte) 
     {   
      uint temp = Convert.ToUInt32(Receivedbyte[1]); 

      temp = temp^0x20; 
      Receivedbyte[0] = Convert.ToString(temp); 
      Receivedbyte[1] = Receivedbyte[2]; 
      Receivedbyte[2] = Receivedbyte[3]; 
      return Receivedbyte; 
     } 
+0

Welche Sprache sprechen Sie an? C#? –

Antwort

0

Convert.ToUInt32 versucht Dezimalstring zu analysieren, aber Ihre Eingabe ist hex, damit der Fehler. Versuchen Sie byte.Parse(ReceivedBytes[1], NumberStyles.AllowHexSpecifier).

Auch uint.ToString() konvertiert in eine dezimale Darstellung. Willst du dich in ein Hex verwandeln? Dann sollten Sie .ToString("X").

Was Sie programmieren, sobald das Parsing in Ordnung ist, steht in völligem Widerspruch zu dem, was Sie beschreiben, es soll. Sie werden mit ["26", "7A", "60", "60"] enden, wobei "26" die (dezimale) Darstellung von 0x3A^0x20, 26 ist.

Warum verwirren Sie überhaupt mit Saiten? Kannst du nicht einfach eine byte[] verwenden? Wie:

public static byte[] EscapeFix(byte[] receivedBytes) 
{ 
    return receivedBytes.Select(b => (byte)(b^0x20)).ToArray(); 
}