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.