Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Menukar Rentetan Hex kepada Tatasusunan Bait dalam C?

Bagaimanakah Saya Boleh Menukar Rentetan Hex kepada Tatasusunan Bait dalam C?

Patricia Arquette
Lepaskan: 2025-01-01 01:22:16
asal
651 orang telah melayarinya

How Can I Convert a Hex String to a Byte Array in C  ?

Menukar Rentetan Hex kepada Tatasusunan Bait

Untuk menukar rentetan hex panjang berubah-ubah seperti "01A1" kepada tatasusunan bait, ada adalah beberapa kaedah yang boleh anda pertimbangkan:

Menggunakan Vektor Aksara

Coretan kod berikut menunjukkan cara menggunakan vektor aksara untuk menyimpan tatasusunan bait yang ditukar:

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;
}
Salin selepas log masuk

Fungsi ini mengambil rentetan hex sebagai input dan berulang melaluinya watak secara berpasangan. Setiap pasangan aksara ditukar kepada satu bait menggunakan fungsi strtol, yang mentafsir rentetan heks sebagai perwakilan perenambelasan dan mengembalikan nilai perpuluhan yang setara. Bait yang terhasil kemudiannya dilampirkan pada vektor.

Menggunakan Tatasusunan Aksara

Sebagai alternatif, anda boleh menyimpan tatasusunan bait dalam tatasusunan aksara:

char* HexToBytes(const std::string& hex, int& length) {
  length = hex.length() / 2;
  char* bytes = new char[length];

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

  return bytes;
}
Salin selepas log masuk

Dalam kes ini, fungsi mengambil rentetan hex dan rujukan integer yang akan menyimpan panjang terhasil tatasusunan bait. Ia memperuntukkan memori secara dinamik untuk tatasusunan bait dan mengisinya dengan cara yang sama seperti penyelesaian berasaskan vektor.

Kedua-dua pendekatan ini menghasilkan tatasusunan bait yang boleh ditulis pada fail dan ditafsirkan dengan betul sebagai data binari yang diwakili oleh rentetan heks asal.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menukar Rentetan Hex kepada Tatasusunan Bait dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan