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

Bagaimana untuk Menukar Rentetan Heksadesimal kepada Tatasusunan Byte dalam C?

Susan Sarandon
Susan Sarandonasal
2024-12-24 11:50:14545semak imbas

How to Convert a Hexadecimal String to a Byte Array in C  ?

Penukaran Rentetan Heksadesimal kepada Tatasusunan Bait

Dalam senario pengaturcaraan, selalunya perlu untuk menukar rentetan perenambelasan, yang mewakili data binari dalam padat format, ke dalam tatasusunan bait. Tatasusunan bait lebih sesuai untuk manipulasi dan penyimpanan data langsung.

Satu pendekatan berkesan untuk penukaran ini melibatkan penggunaan fungsi strtol() standard. Fungsi ini mentafsir rentetan digit sebagai integer yang ditentukan asas, membolehkan kami mengekstrak perwakilan integer bagi aksara hex kami.

Berikut ialah pelaksanaan dalam C :

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 menggunakan gelung untuk memeriksa rentetan hex secara berulang dalam pasangan aksara. Untuk setiap pasangan, ia mencipta subrentetan mewakili bait heks tunggal dan menukarnya kepada char menggunakan strtol(), membekalkan asas 16 untuk tafsiran perenambelasan. Aksara yang terhasil kemudiannya dilampirkan pada vektor bait.

Dengan menggunakan fungsi ini, anda boleh menukar rentetan perenambelasan kepada tatasusunan bait dengan mudah, membolehkan pengendalian dan penyimpanan data binari yang cekap.

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