Frage

Also, ich habe eine Reihe von 13 Zeichen.

string str = "HELLOWORLDZZZ";

und ich brauche diese zu speichern, als ASCII-Darstellung (hex) in einer uint Variable. Wie kann ich das tun?

War es hilfreich?

Lösung

Sie können mit Encoding.ASCII . GetBytes Ihre Zeichenfolge in eine byte Array mit ASCII-Kodierung konvertiert werden (jeweils Zeichen Einnahme einer byte). Dann rufen BitConverter.ToUInt32 , die Byte-Array in einen uint zu konvertieren. Doch wie @R. Bemrose in den Kommentaren erwähnt, ein uint ist nur 4 bytes, so dass Sie zunächst einige Partitionierung des Arrays zu tun brauchen.

Andere Tipps

Hier finden Sie aktuelle Convert.ToUInt32(string, int) . Zum Beispiel:

uint parsed = Convert.ToUInt32(str, 16);
uint.Parse(hexString, System.Globalization.NumberStyles.HexNumber);

Ich denke, das ist die Methode, die Sie wollen

Convert.ToUInt32(yourHexNumber, 16);

finden Sie in der Dokumentation hier .

Sehen Sie meinen Kommentar, aber wenn Sie wollen einfach nur einen ASCII-String in Hex umwandeln, das, was ich vermute:

public string HexIt(string yourString)
{
    string hex = "";
    foreach (char c in yourString)
    {
        int tmp = c;
        hex += String.Format("{0:x2}", (uint)System.Convert.ToUInt32(tmp.ToString()));
    }
    return hex;
}

Dies wird Ihren string konvertieren (mit einer Darstellung 16 Basis) zu einem uint.

uint val = Convert.ToUInt32(str, 16);

Nun ich denke, ich verstehe, was Sie auf bdukes Antwort in einem Kommentar möchten.

Wenn Sie den Code hex wollen für jedes Zeichen in der Zeichenfolge Sie es mithilfe von LINQ erhalten.

var str = "ABCD";
var hex = str.Select(c => ((int)c).ToString("X"))
    .Aggregate(String.Empty, (x, y) => x + y);

hex wird ein String 41424344 sein

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top