Udostępnij za pośrednictwem


Porady: konwertowanie ciągów szestnastkowych na typy liczbowe (Przewodnik programowania w języku C#)

Następujące przykłady pokazują, jak wykonywać następujące zadania:

  • Uzyskania wartości szesnastkowych każdy znak w string.

  • Uzyskanie char odpowiadające każdej wartości w ciągu szesnastkowego.

  • Konwertuj szesnastkowej string do int.

  • Konwertuj szesnastkowej string do pływaka.

  • Konwertuj bajt tablicy na szesnastkową string.

Przykład

W tym przykładzie wyświetla wartość szesnastkową każdy znak w string.Pierwszy analizuje string do tablicy znaków.Następnie wywołuje ToInt32(Char) na każdy znak w celu uzyskania jej wartość liczbową.Wreszcie, formatuje liczbę jako swojego przedstawicielstwa szesnastkowe w 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 decimal value to a hexadecimal value in string form. 
    string hexOutput = String.Format("{0:X}", value);
    Console.WriteLine("Hexadecimal value of {0} is {1}", letter, hexOutput);
}
/* 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
 */

W tym przykładzie analizuje string z wartości w zapisie szesnastkowym i wyprowadza znaków, odpowiadającymi każdej wartości szesnastkowe.Najpierw wywołuje Split(Char) metoda uzyskania każdej wartości szesnastkowych jako osoba prywatna string w tablicy.Następnie wywołuje ToInt32(String, Int32) Aby przekonwertować wartość szesnastkowa wartość dziesiętna reprezentowane jako int.Zawiera on dwa różne sposoby, aby uzyskać znak odpowiadający kod tego znaku.Używa pierwszego technika ConvertFromUtf32(Int32), która zwraca znak odpowiadający argument liczby całkowitej, jak string.Druga technika jawnie rzuca int do char.

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

W tym przykładzie przedstawiono w inny sposób przekonwertować szesnastkowej string na liczbę całkowitą, wywołując Parse(String, NumberStyles) metody.

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

Poniższy przykład pokazuje, jak konwertować szesnastkowej string do pływaka za pomocą BitConverter klasy oraz Int32.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            

Poniższy przykład pokazuje, jak konwertować bajt tablica na ciąg szesnastkowy za pomocą BitConverter klasy.

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

Zobacz też

Zadania

Porady: określanie, czy ciąg reprezentuje wartość numeryczną (Przewodnik programowania w języku C#)

Informacje

Typy (Przewodnik programowania w języku C#)

Koncepcje

Standardowe ciągi formatujące liczby