Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Menukar Rentetan Hex kepada Tatasusunan Byte dalam C?

Bagaimana untuk Menukar Rentetan Hex kepada Tatasusunan Byte dalam C?

Linda Hamilton
Linda Hamiltonasal
2024-12-19 11:03:33888semak imbas

How to Convert Hex Strings to Byte Arrays in C  ?

Menukar Rentetan Heksadesimal kepada Tatasusunan Byte

Apabila bekerja dengan data binari, selalunya perlu menukar rentetan perenambelasan kepada tatasusunan bait. Rentetan heksadesimal mewakili data binari mentah dalam format perenambelasannya. Begini cara anda boleh mencapai penukaran ini dalam C menggunakan rentetan hex panjang berubah-ubah.

Untuk menukar rentetan hex "01A1" kepada tatasusunan bait, kami akan menggunakan pendekatan berikut:

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

  for (unsigned int i = 0; i < hex.length(); i += 2) {
    std::string byteString = hex.substr(i, 2);
    char byte = (char)strtol(byteString.c_str(), NULL, 16);
    bytes.push_back(byte);
  }

  return bytes;
}

Fungsi ini berulang melalui rentetan hex, mengekstrak pasangan aksara pada satu masa dan menukarnya kepada bait sepadannya menggunakan fungsi strtol(). Tatasusunan bait yang terhasil kemudian dikembalikan.

Setelah anda menukar rentetan heks kepada tatasusunan bait, anda boleh menyimpannya dalam pembolehubah jenis char* atau std::vector seperti yang dikehendaki oleh aplikasi khusus anda. Dengan menulis tatasusunan bait pada fail dan menggunakan arahan hexdump -C, anda boleh mengesahkan bahawa data sepadan dengan rentetan hex asal.

Atas ialah kandungan terperinci Bagaimana untuk Menukar Rentetan Hex kepada Tatasusunan 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