Rumah >pembangunan bahagian belakang >C++ >Bagaimana dengan Cekap Menukar Rentetan kepada Heksadesimal dan Sebaliknya dalam C?
Menukar Rentetan kepada Perenambelasan dan Sebaliknya dalam C
Menukar rentetan kepada perenambelasan dan sebaliknya ialah tugas biasa dalam banyak senario pengaturcaraan. Dalam C , terdapat beberapa pendekatan untuk mencapai penukaran ini dengan cekap.
Rentetan kepada Penukaran Heksadesimal
Untuk menukar rentetan kepada perwakilan heksadesimalnya, kita boleh menggunakan gelung dan operasi bitwise. Untuk setiap aksara dalam rentetan, kita boleh mengekstrak nilai ASCIInya, menukarkannya kepada perenambelasan menggunakan teknik anjakan bit (anjakan ke kanan dan kiri), dan tambahkan digit heks yang terhasil pada rentetan output.
Berikut ialah contoh pelaksanaan:
std::string string_to_hex(const std::string& input) { static const char hex_digits[] = "0123456789ABCDEF"; std::string output; output.reserve(input.length() * 2); for (unsigned char c : input) { output.push_back(hex_digits[c >> 4]); output.push_back(hex_digits[c & 15]); } return output; }
Heksadesimal ke Rentetan Penukaran
Untuk menyahkod rentetan perenambelasan kembali ke dalam perwakilan aksara asalnya, kami menggunakan struktur gelung yang serupa. Kami menghuraikan rentetan input dua aksara pada satu masa, menukar setiap pasangan digit heks kepada nilai ASCII yang sepadan menggunakan jadual carian atau operasi bitwise dan mengumpul aksara yang dinyahkod dalam rentetan output.
Berikut ialah fungsi untuk lakukan penukaran ini:
std::string hex_to_string(const std::string& input) { const auto len = input.length(); if (len & 1) throw std::invalid_argument("odd length"); std::string output; output.reserve(len / 2); for (auto it = input.begin(); it != input.end(); ) { int hi = hex_value(*it++); int lo = hex_value(*it++); output.push_back(hi << 4 | lo); } return output; } int hex_value(unsigned char hex_digit) { static const signed char hex_values[256] = {...}; int value = hex_values[hex_digit]; if (value == -1) throw std::invalid_argument("invalid hex digit"); return value; }
Atas ialah kandungan terperinci Bagaimana dengan Cekap Menukar Rentetan kepada Heksadesimal dan Sebaliknya dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!