C # zu konvertieren Zeichenfolge uint
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?
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 byte
s, 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