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 int

  • Konvertieren eines hexadezimalen string in float

  • Konvertieren 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
 */

Siehe auch