Jak převést mezi šestnáctkovými řetězci a číselnými typy (Průvodce programováním v C#)
Tyto příklady ukazují, jak provádět následující úlohy:
Získejte znak, který odpovídá každé hodnotě v šestnáctkovém řetězci.
Převede šestnáctkový
string
na int.Převede šestnáctkový
string
na plovoucí.
Příklady
Tento příklad vypíše šestnáctkovou hodnotu každého znaku v znaku string
. Nejprve parsuje string
pole znaků. Potom volá ToInt32(Char) každý znak, aby získal jeho číselnou hodnotu. Nakonec formátuje číslo jako šestnáctkové vyjádření v objektu 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
*/
Tento příklad analyzuje string
šestnáctkové hodnoty a vypíše znak odpovídající každé šestnáctkové hodnotě. Nejprve volá Metodu Split(Char[]), která získá každou šestnáctkovou hodnotu jako jednotlivec string
v poli. Potom volá ToInt32(String, Int32) převod šestnáctkové hodnoty na desetinnou hodnotu reprezentovanou jako int. Ukazuje dva různé způsoby získání znaku odpovídajícího kódu daného znaku. První technika používá ConvertFromUtf32(Int32), který vrátí znak odpovídající celočíselnému argumentu string
jako . Druhá technika explicitně přetypuje int
znak na znak.
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 !
*/
Tento příklad ukazuje další způsob, jak převést šestnáctkový string
na celé číslo voláním Parse(String, NumberStyles) metody.
string hexString = "8E2";
int num = Int32.Parse(hexString, System.Globalization.NumberStyles.HexNumber);
Console.WriteLine(num);
//Output: 2274
Následující příklad ukazuje, jak převést šestnáctkový string
na float pomocí System.BitConverter třídy a UInt32.Parse metody.
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
Následující příklad ukazuje, jak pomocí třídy převést bajtové pole na šestnáctkový řetězec 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
*/
Následující příklad ukazuje, jak převést bajtové pole na šestnáctkový řetězec voláním Convert.ToHexString metody zavedené v .NET 5.0.
byte[] array = [0x64, 0x6f, 0x74, 0x63, 0x65, 0x74];
string hexValue = Convert.ToHexString(array);
Console.WriteLine(hexValue);
/*Output:
646F74636574
*/