Bagikan melalui


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

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

  • Mendapatkan nilai heksadesimal dari setiap karakter dalam string.

  • Mendapatkan char 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 menampilkan nilai heksadesimal dari setiap karakter dalam string. Pertama, ini menguraikan string ke array karakter. Kemudian memanggil ToInt32(Char) pada setiap karakter untuk mendapatkan nilai numeriknya. Terakhir, 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 menampilkan karakter yang sesuai dengan setiap nilai heksadesimal. Pertama, ini memanggil metode Split(Char[]) untuk mendapatkan setiap nilai heksadesimal sebagai individu string dalam array. Kemudian memanggil ToInt32(String, Int32) untuk mengonversi nilai heksadesimal ke 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 secara eksplisit mentransmisikan int ke 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 metode Parse(String, NumberStyles).

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

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


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

Contoh berikut menunjukkan cara mengonversi array byte menjadi string heksadesimal menggunakan kelas 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
 */

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

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

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

/*Output:
  646F74636574
 */

Lihat juga