Share 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 in een tekenreeks op.

  • Haal het teken op dat overeenkomt met elke waarde in een hexadecimale tekenreeks.

  • Converteer een hexadecimaal string naar een int.

  • Converteer een hexadecimaal string getal naar een float.

  • Converteer een bytematrix naar een hexadecimale stringmatrix.

Voorbeelden

In dit voorbeeld wordt de hexadecimale waarde van elk teken in een string. Eerst wordt de string matrix met tekens geparseerd. Vervolgens wordt elk teken aanroepen ToInt32(Char) om de numerieke waarde te verkrijgen. Ten slotte wordt het getal opgemaakt als de hexadecimale weergave 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 hexadecimale waarde geparseerd en wordt het teken uitgevoerd dat overeenkomt met elke hexadecimale waarde. Eerst wordt de methode Split(Char[]) aangeroepen om elke hexadecimale waarde te verkrijgen als een individu string in een matrix. Vervolgens wordt aanroepen ToInt32(String, Int32) 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 gebruikt ConvertFromUtf32(Int32), die het teken retourneert dat overeenkomt met het argument geheel getal als een string. De tweede techniek cast 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 hexadecimaal string getal te converteren naar een geheel getal door de Parse(String, NumberStyles) methode 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 hexadecimaal string getal converteert naar een float met behulp van de System.BitConverter klasse en de UInt32.Parse methode.


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

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

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 bytematrix 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