ホームページ >バックエンド開発 >C++ >文字列を 16 進数に変換して C に戻すにはどうすればよいですか?

文字列を 16 進数に変換して C に戻すにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-19 11:25:09199ブラウズ

How to Convert Strings to Hexadecimal and Back in C  ?

文字列を 16 進数に変換し、C に戻す

文字列と 16 進数の操作は、プログラミングにおける一般的なタスクです。 C では、標準ライブラリはこれらの操作用の一連の関数を提供します。

文字列を 16 進数に変換 (string_to_hex)

文字列を 16 進数に変換するには、 string_to_hex 関数を使用します。 。この関数は、入力文字列内の各文字を反復処理し、その 16 進値を抽出して、出力文字列に追加します。たとえば、文字列「Hello World」は「48656C6C6F20576F726C64」に変換されます。

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 進数から文字列へ (hex_to_string)

16 進数の文字列を元に変換するには通常の文字列に変換するには、hex_to_string を使用します 関数。ここでは、16 進数の各ペアが整数に変換され、結果の整数が連結されて出力文字列が形成されます。

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;
}

これにより、C で文字列と 16 進データの間で簡単に変換できるようになります。さまざまなプログラミング シナリオに便利です。

以上が文字列を 16 進数に変換して C に戻すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。