Rumah >pembangunan bahagian belakang >C++ >Bagaimana dengan Cekap Menukar Rentetan Hex kepada Array Byte dalam C?

Bagaimana dengan Cekap Menukar Rentetan Hex kepada Array Byte dalam C?

Patricia Arquette
Patricia Arquetteasal
2024-12-18 19:26:12485semak imbas

How to Efficiently Convert a Hex String to a Byte Array in C  ?

Penukaran Rentetan Hex kepada Tatasusunan Byte

Menukar rentetan hex panjang berubah kepada tatasusunan bait ialah tugas biasa dalam pengaturcaraan, membolehkan perwakilan data binari dalam format yang boleh dibaca manusia. Begini cara untuk mencapai ini dengan cekap:

Untuk menukar rentetan heks seperti "01A1" kepada tatasusunan bait, kita boleh memanfaatkan fungsi strtol() terbina dalam untuk melaksanakan penukaran. Pelaksanaan berikut mencipta std::vektor aksara untuk menyimpan tatasusunan bait:

std::vector<char> HexToBytes(const std::string& hex) {
  std::vector<char> bytes;

  // Loop through the hex string in pairs of characters
  for (unsigned int i = 0; i < hex.length(); i += 2) {
    // Extract the current pair of characters
    std::string byteString = hex.substr(i, 2);

    // Convert the pair to a char using strtol()
    char byte = (char)strtol(byteString.c_str(), NULL, 16);

    // Append the char to the byte array
    bytes.push_back(byte);
  }

  // Return the byte array
  return bytes;
}

Pendekatan ini berfungsi untuk sebarang rentetan hex panjang genap. Fungsi strtol() mengambil penuding kepada tatasusunan aksara byteString.c_str() dan asas (16 untuk perenambelasan).

Dengan menggunakan fungsi HexToBytes() ini, anda boleh menukar rentetan hex kepada bait dengan mudah tatasusunan, membolehkan anda bekerja dengan data binari dengan cara yang mudah dan fleksibel.

Atas ialah kandungan terperinci Bagaimana dengan Cekap Menukar Rentetan Hex kepada Array Byte dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn