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

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

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

How to Convert Between Strings and Hexadecimal in C  ?

C 文字列と 16 進数間の変換

C では、データ型を効率的に操作および変換できます。これには、文字列と 16 進数形式の間の変換が含まれます。

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

文字列を 16 進数表現に変換するには、16 進数の文字配列を利用するのが一般的な方法です。以下に例を示します。

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

この関数では、素早いアクセスのために 16 進数が静的配列に保存されます。入力文字列を反復処理し、各文字を抽出して 2 つの 16 進数として表します。

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

プロセスを逆にして 16 進数の文字列を元の表現に変換するには、次のようにします。 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 ヘルパー関数を使用して個々の 16 進数を解釈します。

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

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