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

C で 16 進文字列をバイト配列に変換するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-24 11:50:14547ブラウズ

How to Convert a Hexadecimal String to a Byte Array in C  ?

16 進文字列からバイト配列への変換

プログラミング シナリオでは、多くの場合、バイナリ データをコンパクトに表す 16 進文字列を変換する必要があります。バイト配列にフォーマットします。バイト配列は、データの直接操作や保存に適しています。

この変換に対する効果的なアプローチの 1 つは、標準の strtol() 関数を利用することです。この関数は、数字の文字列を基数指定の整数として解釈し、16 進数文字の整数表現を抽出できるようにします。

C での実装は次のとおりです。

std::vector<char> HexToBytes(const std::string& hex) {
  std::vector<char> bytes;

  for (unsigned int i = 0; i < hex.length(); i += 2) {
    std::string byteString = hex.substr(i, 2);
    char byte = (char) strtol(byteString.c_str(), NULL, 16);
    bytes.push_back(byte);
  }

  return bytes;
}

この関数は使用します。文字のペアで 16 進文字列を繰り返し検査するループ。各ペアについて、単一の 16 進バイトを表す部分文字列を作成し、strtol() を使用してそれを char に変換し、16 進数の解釈に 16 の基数を提供します。結果の char はバイト ベクトルに追加されます。

この関数を利用すると、16 進文字列をバイト配列に簡単に変換でき、バイナリ データの効率的な処理と保存が可能になります。

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

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