Delen via


Converteren tussen hexadecimale tekenreeksen en numerieke typen (C#-programmeerhandleiding)

In deze voorbeelden ziet u hoe u de volgende taken uitvoert:

  • Haal de hexadecimale waarde van elk teken op in een tekenreeks.

  • Verkrijg het karakter dat overeenkomt met elke waarde uit een hexadecimale tekenreeks.

  • Converteer een hexadecimale string naar een int.

  • Converteer een hexadecimale string naar een float .

  • Converteer een byte- matrix naar een hexadecimale string.

Voorbeelden

In dit voorbeeld wordt de hexadecimale waarde van elk teken in een stringweergegeven. Eerst wordt de string geparseerd naar een matrix met tekens. Vervolgens wordt ToInt32(Char) voor elk teken aangeroepen om de numerieke waarde ervan te verkrijgen. Ten slotte wordt het getal in hexadecimale notatie weergegeven in een string.

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 dit voorbeeld wordt een string met hexadecimale waarden geparseerd en wordt het teken uitgevoerd dat overeenkomt met elke hexadecimale waarde. Eerst wordt de Split(Char[]) methode aangeroepen om elke hexadecimale waarde te verkrijgen als een afzonderlijke string in een matrix. Vervolgens wordt ToInt32(String, Int32) aanroepen om de hexadecimale waarde te converteren naar een decimale waarde die wordt weergegeven als een int. Er worden twee verschillende manieren weergegeven om het teken te verkrijgen dat overeenkomt met die tekencode. De eerste techniek maakt gebruik van ConvertFromUtf32(Int32), waarmee het teken dat overeenkomt met het geheel getal argument als een stringwordt geretourneerd. De tweede techniek caste de int expliciet naar een teken.

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

In dit voorbeeld ziet u een andere manier om een hexadecimale string te converteren naar een geheel getal door de methode Parse(String, NumberStyles) aan te roepen.

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

In het volgende voorbeeld ziet u hoe u een hexadecimale string converteert naar een float- met behulp van de System.BitConverter-klasse en de methode UInt32.Parse.


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 = {f}");

// Output: 200.0056

In het volgende voorbeeld ziet u hoe u een byte--matrix converteert naar een hexadecimale tekenreeks met behulp van de klasse System.BitConverter.

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

In het volgende voorbeeld ziet u hoe u een byte--matrix converteert naar een hexadecimale tekenreeks door de Convert.ToHexString methode aan te roepen die is geïntroduceerd in .NET 5.0.

byte[] array = [0x64, 0x6f, 0x74, 0x63, 0x65, 0x74];

string hexValue = Convert.ToHexString(array);
Console.WriteLine(hexValue);

/*Output:
  646F74636574
 */

Zie ook