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