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 det tecken som motsvarar varje värde i en hexadecimal sträng.

  • Konvertera ett hexadecimalt string till en int.

  • Konvertera ett hexadecimalt string till en float.

  • Konvertera en bytematris till ett hexadecimalt 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) 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 ett 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 individ string i en matris. Sedan anropas ToInt32(String, Int32) för att konvertera hexadecimalt värde till ett decimalvärde som representeras som en int. Den visar två olika sätt att hämta tecknet som motsvarar den teckenkoden. Den första tekniken använder ConvertFromUtf32(Int32), som returnerar tecknet som motsvarar heltalsargumentet som en string. Den andra tekniken kastar int explicit 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 Parse(String, NumberStyles) metoden.

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 ett hexadecimalt string till en flyttal med hjälp System.BitConverter av klassen och UInt32.Parse metoden.


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

I följande exempel visas hur du konverterar en bytematris till en hexadecimal sträng med hjälp System.BitConverter av klassen .

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