Aracılığıyla paylaş


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:

  • Bir dizedeki her karakterin onaltılık değerini alın.

  • Onaltılık dizedeki her değere karşılık gelen karakteri alın.

  • Onaltılık string bir int'e dönüştürün.

  • Onaltılık bir sayıyı string bir float'a dönüştürün.

  • Bayt dizisini onaltılık stringbir diziye dönüştürün.

Örnekler

Bu örnek, içindeki stringher karakterin onaltılık değerini verir. İlk olarak string öğesini bir karakter dizisine ayrıştırıyor. Ardından her karakterin sayısal değerini almak için ToInt32(Char) çağırır. Son olarak, sayıyı onaltılık gösterimi olarak string içinde 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) kullanarak tamsayı bağımsız değişkenine karşılık gelen karakteri bir string olarak döndürür. İkinci teknik, int öğesini açıkça bir karakter olarak dönüştürür.

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, Parse(String, NumberStyles) yöntemini çağırarak onaltılık string değerini tamsayıya dönüştürmenin 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 örnek, System.BitConverter sınıfı ve UInt32.Parse yöntemi kullanılarak onaltılık string değerinin float'a nasıl dönüştürüldüğünü göstermektedir.


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

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

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.