Onaltılık dizeler ve sayısal türler arasında dönüştürme (C# Programlama Kılavuzu)

Bu örnekler aşağıdaki görevlerin nasıl gerçekleştirileceğini gösterir:

Örnekler

Bu örnek, içindeki stringher karakterin onaltılık değerini verir. İlk olarak öğesini string bir karakter dizisine ayrıştırıyor. Ardından sayısal değerini almak için her karakteri çağırır ToInt32(Char) . Son olarak, sayıyı içindeki stringonaltılık gösterimi olarak biçimlendirir.

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

Bu örnek, onaltılık değerlerden birini string ayrıştırır ve her onaltılık değere karşılık gelen karakteri verir. İlk olarak split(Char[]) yöntemini çağırarak her onaltılık değeri bir dizideki bir birey string olarak alır. Ardından onaltılık değeri int olarak temsil edilen ondalık değere dönüştürmek için çağırırToInt32(String, Int32). Bu karakter koduna karşılık gelen karakteri elde etmenin iki farklı yolunu gösterir. İlk teknik, ConvertFromUtf32(Int32)tamsayı bağımsız değişkenine karşılık gelen karakteri olarak stringdöndüren kullanır. İkinci teknik açıkça öğesini bir karaktere yayınlarint.

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

Bu örnek, yöntemini çağırarak onaltılık string değeri tamsayıya dönüştürmenin Parse(String, NumberStyles) başka bir yolunu gösterir.

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

Aşağıdaki örnekte, sınıfını ve yöntemini kullanarak onaltılık string değerin float'a nasıl dönüştürüldüğü gösterilmektedirUInt32.Parse.System.BitConverter


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

Aşağıdaki örnekte, sınıfını kullanarak bayt dizisinin onaltılık bir dizeye nasıl dönüştürüldüğü gösterilmektedirSystem.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
 */

Aşağıdaki örnek, .NET 5.0'da tanıtılan yöntemi çağırarak bayt dizisinin onaltılık bir dizeye Convert.ToHexString nasıl dönüştürüldüğünü gösterir.

byte[] array = [0x64, 0x6f, 0x74, 0x63, 0x65, 0x74];

string hexValue = Convert.ToHexString(array);
Console.WriteLine(hexValue);

/*Output:
  646F74636574
 */

Ayrıca bkz.