Vorgehensweise: Konvertieren zwischen Hexadezimalzeichenfolgen und numerischen Typen (C#-Programmierleitfaden)
In diesen Beispielen wird gezeigt, wie Sie die folgenden Aufgaben ausführen:
Abrufen des Hexadezimalwerts jedes Zeichens in einer Zeichenfolge
Abrufen des char, das jedem Wert in einer Hexadezimalzeichenfolge entspricht
Konvertieren eines hexadezimalen
string
in intKonvertieren eines hexadezimalen
string
in floatKonvertieren eines Byte-Arrays in einen hexadezimalen
string
Beispiele
In diesem Beispiel wird der Hexadezimalwert jedes Zeichens in einem string
ausgegeben. Zuerst wird der string
in ein Array von Zeichen aufgegliedert. Danach wird ToInt32(Char) auf jedem Zeichen aufgerufen, um dessen numerischen Wert zu erhalten. Abschließend wird die Zahl als Hexadezimaldarstellung in einem string
formatiert.
string input = "Hello World!";
char[] values = input.ToCharArray();
foreach (char letter in values)
{
// Get the integral value of the character.
int value = Convert.ToInt32(letter);
// Convert the integer value to a hexadecimal value in string form.
Console.WriteLine($"Hexadecimal value of {letter} is {value:X}");
}
/* Output:
Hexadecimal value of H is 48
Hexadecimal value of e is 65
Hexadecimal value of l is 6C
Hexadecimal value of l is 6C
Hexadecimal value of o is 6F
Hexadecimal value of is 20
Hexadecimal value of W is 57
Hexadecimal value of o is 6F
Hexadecimal value of r is 72
Hexadecimal value of l is 6C
Hexadecimal value of d is 64
Hexadecimal value of ! is 21
*/
In diesem Beispiel wird ein string
von Hexadezimalwerten analysiert, und die den einzelnen Hexadezimalwerten entsprechenden Zeichen werden ausgegeben. Zuerst wird die Split(Char[])-Methode aufgerufen, um jeden Hexadezimalwert als einzelnen string
in einem Array abzurufen. Anschließend wird ToInt32(String, Int32) aufgerufen, damit der Hexadezimalwert in einen Dezimalwert konvertiert, der als int dargestellt wird. Es werden zwei verschiedene Arten gezeigt, um das diesem Zeichencode entsprechende Zeichen abzurufen. Die erste Methode verwendet ConvertFromUtf32(Int32), wodurch das Zeichen zurückgegeben wird, das dem ganzzahligen Argument als string
entspricht. Die zweite Methode wandelt int
explizit in ein char um.
string hexValues = "48 65 6C 6C 6F 20 57 6F 72 6C 64 21";
string[] hexValuesSplit = hexValues.Split(' ');
foreach (string hex in hexValuesSplit)
{
// Convert the number expressed in base-16 to an integer.
int value = Convert.ToInt32(hex, 16);
// Get the character corresponding to the integral value.
string stringValue = Char.ConvertFromUtf32(value);
char charValue = (char)value;
Console.WriteLine("hexadecimal value = {0}, int value = {1}, char value = {2} or {3}",
hex, value, stringValue, charValue);
}
/* Output:
hexadecimal value = 48, int value = 72, char value = H or H
hexadecimal value = 65, int value = 101, char value = e or e
hexadecimal value = 6C, int value = 108, char value = l or l
hexadecimal value = 6C, int value = 108, char value = l or l
hexadecimal value = 6F, int value = 111, char value = o or o
hexadecimal value = 20, int value = 32, char value = or
hexadecimal value = 57, int value = 87, char value = W or W
hexadecimal value = 6F, int value = 111, char value = o or o
hexadecimal value = 72, int value = 114, char value = r or r
hexadecimal value = 6C, int value = 108, char value = l or l
hexadecimal value = 64, int value = 100, char value = d or d
hexadecimal value = 21, int value = 33, char value = ! or !
*/
Diese Beispiel stellt eine andere Möglichkeit dar, eine hexadezimale string
in einen Integer zu konvertieren, indem die Parse(String, NumberStyles)-Methode aufgerufen wird.
string hexString = "8E2";
int num = Int32.Parse(hexString, System.Globalization.NumberStyles.HexNumber);
Console.WriteLine(num);
//Output: 2274
Das folgende Beispiel zeigt, wie eine hexadezimale string
in float konvertiert wird, indem die System.BitConverter-Klasse und die UInt32.Parse-Methode verwendet wird.
string hexString = "43480170";
uint num = uint.Parse(hexString, System.Globalization.NumberStyles.AllowHexSpecifier);
byte[] floatVals = BitConverter.GetBytes(num);
float f = BitConverter.ToSingle(floatVals, 0);
Console.WriteLine("float convert = {0}", f);
// Output: 200.0056
Das folgende Beispiel zeigt, wie Sie ein Byte-Array mithilfe der System.BitConverter-Klasse in eine hexadezimale Zeichenfolge konvertieren.
byte[] vals = [0x01, 0xAA, 0xB1, 0xDC, 0x10, 0xDD];
string str = BitConverter.ToString(vals);
Console.WriteLine(str);
str = BitConverter.ToString(vals).Replace("-", "");
Console.WriteLine(str);
/*Output:
01-AA-B1-DC-10-DD
01AAB1DC10DD
*/
Im folgenden Beispiel wird gezeigt, wie Sie ein Byte-Array in eine hexadezimale Zeichenfolge konvertieren, indem Sie die in .NET 5.0 eingeführte Convert.ToHexString-Methode aufrufen.
byte[] array = [0x64, 0x6f, 0x74, 0x63, 0x65, 0x74];
string hexValue = Convert.ToHexString(array);
Console.WriteLine(hexValue);
/*Output:
646F74636574
*/