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

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

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-19 11:03:33911ブラウズ

How to Convert Hex Strings to Byte Arrays in C  ?

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

バイナリ データを扱う場合、多くの場合、16 進文字列をバイト配列に変換する必要があります。 16 進文字列は、生のバイナリ データを 16 進形式で表します。可変長の 16 進文字列を使用して C でこの変換を実行する方法を次に示します。

16 進文字列「01A1」をバイト配列に変換するには、次のアプローチを使用します。

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 進文字列を反復処理し、一度に文字のペアを抽出し、strtol() 関数を使用して対応するバイトに変換します。結果のバイト配列が返されます。

16 進文字列をバイト配列に変換したら、それを char* 型または std::vector 型の変数に格納できます。特定のアプリケーションの必要に応じて。バイト配列をファイルに書き込み、hexdump -C コマンドを使用すると、データが元の 16 進文字列に対応していることを確認できます。

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

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