Bagikan melalui


Cara mengonversi antara string heksadesimal dan jenis numerik (Panduan Pemrograman C#)

Contoh-contoh ini menunjukkan kepada Anda cara melakukan tugas-tugas berikut:

  • Dapatkan nilai heksadesimal dari setiap karakter dalam string.

  • Dapatkan karakter yang sesuai dengan setiap nilai dalam string heksadesimal.

  • Mengonversi heksadesimal string menjadi int.

  • Mengonversi heksadesimal string menjadi float.

  • Mengonversi array byte menjadi heksadesimal string.

Contoh

Contoh ini menghasilkan nilai heksadesimal dari setiap karakter dalam string. Pertama menguraikan string ke array karakter. Kemudian memanggil ToInt32(Char) setiap karakter untuk mendapatkan nilai numeriknya. Terakhir, ia memformat angka sebagai representasi heksadesimalnya dalam 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
 */

Contoh ini menguraikan string nilai heksadesimal dan menghasilkan karakter yang sesuai dengan setiap nilai heksadesimal. Pertama, ini memanggil metode Split(Char[]) untuk mendapatkan setiap nilai heksadesimal sebagai individu string dalam array. Kemudian, ia memanggil ToInt32(String, Int32) untuk mengonversi nilai heksadesimal menjadi nilai desimal yang direpresentasikan sebagai int. Ini menunjukkan dua cara berbeda untuk mendapatkan karakter yang sesuai dengan kode karakter tersebut. Teknik pertama menggunakan ConvertFromUtf32(Int32), yang mengembalikan karakter yang sesuai dengan argumen bilangan bulat sebagai string. Teknik kedua mengubah tipe secara eksplisit int menjadi 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 !
*/

Contoh ini menunjukkan cara lain untuk mengonversi heksadesimal string menjadi bilangan bulat, dengan memanggil Parse(String, NumberStyles) metode .

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

Contoh berikut menunjukkan cara mengonversi heksadesimal string ke float dengan menggunakan System.BitConverter kelas dan UInt32.Parse metode .


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

Contoh berikut menunjukkan cara mengonversi array byte menjadi string heksadesimal dengan menggunakan System.BitConverter kelas .

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

Contoh berikut menunjukkan cara mengonversi array byte menjadi string heksadesimal dengan memanggil metode yang Convert.ToHexString diperkenalkan dalam .NET 5.0.

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

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

/*Output:
  646F74636574
 */

Lihat juga