C++ Convert Hex Char Array To Int

4 min read Jul 02, 2024
C++ Convert Hex Char Array To Int

Cara Mengonversi Array Karakter Heksadesimal ke Integer dalam C++

Dalam pemrograman C++, seringkali kita perlu mengonversi data dari satu format ke format lainnya. Salah satu konversi yang umum dilakukan adalah mengonversi array karakter heksadesimal ke integer. Artikel ini akan membahas langkah-langkah yang diperlukan untuk melakukan konversi tersebut.

Metode 1: Menggunakan Fungsi strtol

Fungsi strtol adalah fungsi bawaan C++ yang dapat digunakan untuk mengonversi string ke integer. Untuk menggunakannya dalam konversi array karakter heksadesimal, kita perlu mendefinisikan basis numerik (radix) sebagai 16.

Berikut adalah contoh kode:

#include 
#include 

int main() {
  char hexArray[] = "0x1234"; 

  // Mengonversi array karakter heksadesimal ke integer
  int integerValue = strtol(hexArray, nullptr, 16);

  // Menampilkan hasil konversi
  std::cout << "Nilai integer: " << integerValue << std::endl;

  return 0;
}

Pada kode di atas, strtol menerima tiga argumen:

  • hexArray: Array karakter yang berisi nilai heksadesimal.
  • nullptr: Pointer untuk menyimpan alamat karakter pertama setelah string yang dikonversi.
  • 16: Basis numerik (radix) untuk konversi, dalam hal ini heksadesimal.

Metode 2: Mengonversi Setiap Karakter Secara Manual

Jika kita ingin mengontrol proses konversi secara lebih detail, kita dapat mengonversi setiap karakter heksadesimal secara manual. Berikut adalah contoh kode:

#include 
#include 

int main() {
  char hexArray[] = "0x1234";

  // Menghitung panjang array karakter
  int length = sizeof(hexArray) - 1; // Menyingkirkan karakter null terminator

  // Mengonversi setiap karakter ke integer
  int integerValue = 0;
  for (int i = 2; i < length; i++) { // Mengabaikan "0x"
    int digit;
    if (hexArray[i] >= '0' && hexArray[i] <= '9') {
      digit = hexArray[i] - '0';
    } else if (hexArray[i] >= 'A' && hexArray[i] <= 'F') {
      digit = hexArray[i] - 'A' + 10;
    } else if (hexArray[i] >= 'a' && hexArray[i] <= 'f') {
      digit = hexArray[i] - 'a' + 10;
    } else {
      std::cerr << "Karakter tidak valid!" << std::endl;
      return 1;
    }
    integerValue += digit * pow(16, length - i - 1);
  }

  // Menampilkan hasil konversi
  std::cout << "Nilai integer: " << integerValue << std::endl;

  return 0;
}

Kode di atas mengulangi setiap karakter dalam array, mengonversi ke integer sesuai dengan nilai heksadesimalnya, dan mengalikannya dengan pangkat 16 sesuai dengan posisinya dalam array.

Kesimpulan

Kedua metode di atas menunjukkan bagaimana cara mengonversi array karakter heksadesimal ke integer dalam C++. Pilih metode yang sesuai dengan kebutuhan dan tingkat kendali yang diinginkan. Pastikan untuk memahami basis numerik dan format input sebelum melakukan konversi.

Latest Posts


Featured Posts