首頁 > 後端開發 > C++ > 如何在C中的字符串和十六進制之間轉換?

如何在C中的字符串和十六進制之間轉換?

Mary-Kate Olsen
發布: 2024-12-11 12:11:14
原創
686 人瀏覽過

How to Convert Between Strings and Hexadecimal in C  ?

字串和十六進位之間的 C 轉換

在 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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板