首頁 > 後端開發 > C++ > 如何在 C 中高效地在十六進位字串和標準字串之間進行轉換?

如何在 C 中高效地在十六進位字串和標準字串之間進行轉換?

Patricia Arquette
發布: 2024-12-15 22:23:13
原創
909 人瀏覽過

How to Efficiently Convert Between Hexadecimal Strings and Standard Strings in C  ?

將十六進位字串轉換為C 中的字串

十六進位和標準文字格式之間的字符串轉換需要C 中的強大方法。這是詳細指南:

將字串轉換為十六進位:

string_to_hex()函數提供了一個簡單的解決方案:

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()函數可確保准確性:

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;
}
登入後複製

用法示例:

為了演示功能:

std::string original_string = "Hello World";
std::string hex_string = string_to_hex(original_string);
std::cout << "Hexadecimal representation: " << hex_string << std::endl;
std::string recovered_string = hex_to_string(hex_string);
std::cout << "Recovered string: " << recovered_string << std::endl;
登入後複製

輸出:

Hexadecimal representation: 48656c6c6f20576f726c64
Recovered string: Hello World
登入後複製

以上是如何在 C 中高效地在十六進位字串和標準字串之間進行轉換?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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