ホームページ > バックエンド開発 > C++ > C で 16 進文字列と標準文字列の間で効率的に変換するにはどうすればよいですか?

C で 16 進文字列と標準文字列の間で効率的に変換するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-15 22:23:13
オリジナル
910 人が閲覧しました

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

C での 16 進数の文字列から文字列への変換

16 進数と標準のテキスト形式間の文字列変換には、C での堅牢なアプローチが必要です。詳細なガイドは次のとおりです:

文字列を 16 進数に変換する:

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;
}
ログイン後にコピー

16 進数を次のように変換文字列:

16 進数から文字列への変換では、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 で 16 進文字列と標準文字列の間で効率的に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート