Sdílet prostřednictvím


Postupy: Převod mezi hexadecimálními řetězci a číselnými typy (Průvodce programováním v C#)

Tyto příklady ukazují, jak provést následující úkoly:

  • Získání šestnáctkové hodnoty jednotlivých znaků řetězec.

  • Získat char , které odpovídá hodnotě v řetězci šestnáctkové soustavy.

  • Převést hexadecimální string se int.

  • Převést hexadecimální string se plovoucí.

  • Převést bajt pole hexadecimální string.

Příklad

V tomto příkladu vypíše šestnáctková hodnota každého znaku v string.Nejprve se analyzuje string do pole znaků.Potom zavolá ToInt32(Char) na každý znak získat jeho číselnou hodnotu.Konečně, zformátuje toto číslo jako jeho šestnáctkový zápis v 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
 */

V tomto příkladu analyzuje string z šestnáctkové hodnoty a výstupy znak odpovídající hexadecimální hodnoty.Nejprve volá Split(Char) metoda získání každé hexadecimální hodnotu jako samostatnou string v matici.Potom zavolá ToInt32(String, Int32) převést hexadecimální hodnotu na desítkovou hodnotu, jako int.Zobrazí znak odpovídající kód znaku získat dvěma způsoby.První metoda používá ConvertFromUtf32(Int32), která vrátí znak odpovídající argument celého čísla, jako string.Druhá technika explicitně vrhá int se 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 !
*/

Tento příklad ukazuje jiný způsob, jak převést hexadecimální string na celé voláním Parse(String, NumberStyles) metoda.

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 hexadecimální string se float pomocí BitConverter třídy a Int32.Parse metoda.

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 převést bajt šestnáctkový řetězec pomocí pole BitConverter třídy.

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

Viz také

Úkoly

Postupy: Určení, zda řetězec reprezentuje číselnou hodnotu (Průvodce programováním v C#)

Referenční dokumentace

Typy (Průvodce programováním v C#)

Koncepty

Standardní řetězce formátu čísla