Dela via


Konvertera mellan hexadecimala strängar och numeriska typer (C#-programmeringsguide)

De här exemplen visar hur du utför följande uppgifter:

  • Hämta hexadecimalt värde för varje tecken i en sträng.

  • Hämta tecken som motsvarar varje värde i en hexadecimal sträng.

  • Konvertera en hexadecimal string till en int.

  • Konvertera hexadecimalen string till ett flyttal med värdet .

  • Konvertera en byte--matris till en hexadecimal string.

Exempel

Det här exemplet matar ut hexadecimalt värde för varje tecken i en string. Först parsar den string till en matris med tecken. Sedan anropas ToInt32(Char) på varje tecken för att hämta dess numeriska värde. Slutligen formateras talet som dess hexadecimala representation i en 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
 */

Det här exemplet parsar en string av hexadecimala värden och matar ut tecknet som motsvarar varje hexadecimalt värde. Först anropas metoden Split(Char[]) för att hämta varje hexadecimalt värde som en enskild string i en matris. Sedan anropas ToInt32(String, Int32) för att konvertera hexadecimalt värde till ett decimalvärde som representeras som ett int. Den visar två olika sätt att hämta tecknet som motsvarar den teckenkoden. Den första tekniken använder ConvertFromUtf32(Int32), vilket returnerar tecknet som motsvarar heltalsargumentet, som ett string. Den andra tekniken omvandlar uttryckligen int till ett tecken.

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

Det här exemplet visar ett annat sätt att konvertera ett hexadecimalt string till ett heltal genom att anropa metoden Parse(String, NumberStyles).

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

I följande exempel visas hur du konverterar en hexadecimal string till en float- med hjälp av klassen System.BitConverter och metoden 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

I följande exempel visas hur du konverterar en byte- matris till en hexadecimal sträng med hjälp av klassen 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
 */

I följande exempel visas hur du konverterar en byte- matris till en hexadecimal sträng genom att anropa metoden Convert.ToHexString som introducerades i .NET 5.0.

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

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

/*Output:
  646F74636574
 */

Se även