Gewusst wie: Konvertieren zwischen Hexadezimalzeichenfolgen und numerischen Typen (C#-Programmierhandbuch)

Aktualisiert: Juli 2008

In diesen Beispielen wird Ihnen gezeigt, wie die folgenden Aufgaben ausgeführt werden:

  • Abrufen eines Hexadezimalwerts eines Zeichens in einer Zeichenfolge.

  • Abrufen von char, das den einzelnen Werten in einer Hexadezimalzeichenfolge entspricht.

  • Konvertieren eines hexadezimalen string-Werts in eine Ganzzahl (int).

  • Konvertieren eines hexadezimalen string-Werts in float-Wert.

  • Konvertieren eines Bytearrays (byte) in eine hexadezimale Zeichenfolge (string).

Beispiel

In diesem Beispiel wird der Hexadezimalwert jedes Zeichens in einer Zeichenfolge (string) ausgegeben. Zunächst wird die Zeichenfolge (string) in ein Zeichenarray ausgewertet. Anschließend wird für jedes Zeichen ToInt32(Char) aufgerufen, um den numerischen Wert zu erhalten. Zum Schluss wird die Zahl als Hexadezimaldarstellung in einer Zeichenfolge (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 decimal value to a hexadecimal value in string form.
    string hexOutput = String.Format("{0:X}", value);
    Console.WriteLine("Hexadecimal value of {0} is {1}", letter, hexOutput);
}
/* 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 eine Zeichenfolge (string) von Hexadezimalwerten analysiert, und die den einzelnen Hexadezimalwerten entsprechenden Zeichen werden ausgegeben. Zunächst wird die Split(array<Char[])-Methode aufgerufen, um die einzelnen Hexadezimalwerte als einzelne string-Werte in einem Array zu erhalten. Dann wird der Hexadezimalwert durch Aufrufen von ToInt32(String, Int32) in einen Dezimalwert konvertiert, der als Ganzzahlwert (int) dargestellt wird. Das Beispiel zeigt zwei verschiedene Möglichkeiten, das Zeichen zu erhalten, das diesem Zeichencode entspricht. Bei der ersten Methode wird ConvertFromUtf32(Int32) verwendet, das das Zeichen, das dem ganzzahligen Argument entspricht, als string-Zeichenfolge zurückgibt. Bei der zweiten Möglichkeit wird der int-Wert explizit in einen char-Wert umgewandelt.

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 !
*/

Dieses Beispiel zeigt eine weitere Möglichkeit zur Konvertierung einer Hexadezimalzeichenfolge (string) in einen Ganzzahlwert durch Aufrufen der Parse(String, NumberStyles)-Methode.

string hexString = "8E2";
int num = Int32.Parse(hexString, System.Globalization.NumberStyles.HexNumber);
Console.WriteLine(num);
//Output: 2274

Im folgenden Beispiel wird dargestellt, wie eine Hexadezimalzeichenfolge (string) in einen float-Wert konvertiert wird. Dazu werden die System.BitConverter-Klasse und die Int32.Parse-Methode verwendet.

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            

Im folgenden Beispiel wird dargestellt, wie ein Bytearray (byte) mithilfe der System.BitConverter-Klasse in eine Hexadezimalzeichenfolge konvertiert wird.

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

Siehe auch

Aufgaben

Gewusst wie: Bestimmen, ob eine Zeichenfolge einen numerischen Wert darstellt (C#-Programmierhandbuch)

Konzepte

Standardmäßige Zahlenformatzeichenfolgen

Referenz

Typen (C#-Programmierhandbuch)

Änderungsverlauf

Date

Versionsgeschichte

Grund

Juli 2008

Die letzten beiden Codebeispiele wurden hinzugefügt.

Korrektur inhaltlicher Fehler.