在 C 中,可以有效地操作和轉換資料類型。這包括字串和十六進制格式之間的轉換。
要將字串轉換為其十六進位表示形式,常見的方法是使用十六進位數字的字元陣列。以下是一個範例:
#include <string> 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; }
在此函數中,十六進位數字儲存在靜態陣列中以便快速存取。它迭代輸入字串,提取每個字元並將其表示為兩個十六進制數字。
要反轉該過程並將十六進位字串轉換回其原始表示形式,您可以可以使用hex_to_string 函數:
#include <stdexcept> 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; }
此函數驗證輸入字串是否具有偶數長度(假設每個數字的有效性)並使用hex_value 輔助函數來解釋各個十六進位數字。
以上是如何在C中的字符串和十六進制之間轉換?的詳細內容。更多資訊請關注PHP中文網其他相關文章!