方法1: 文字列を1文字ずつ処理する方法
#include <iostream>
#include <sstream>
#include <iomanip>
std::string asciiToHex(const std::string& input) {
std::stringstream output;
output << std::hex << std::setfill('0');
for (char c : input) {
output << std::setw(2) << static_cast<int>(c);
}
return output.str();
}
int main() {
std::string input = "Hello, World!";
std::string hexString = asciiToHex(input);
std::cout << hexString << std::endl;
return 0;
}
方法2: ライブラリを使用する方法 (Boostライブラリを例にします)
#include <iostream>
#include <boost/algorithm/hex.hpp>
std::string asciiToHex(const std::string& input) {
std::string hexString;
boost::algorithm::hex(input.begin(), input.end(), std::back_inserter(hexString));
return hexString;
}
int main() {
std::string input = "Hello, World!";
std::string hexString = asciiToHex(input);
std::cout << hexString << std::endl;
return 0;
}
方法3: C++17以降の機能を使用する方法 (std::string_viewを使用)
#include <iostream>
#include <string_view>
#include <iomanip>
std::string asciiToHex(std::string_view input) {
std::stringstream output;
output << std::hex << std::setfill('0');
for (char c : input) {
output << std::setw(2) << static_cast<int>(c);
}
return output.str();
}
int main() {
std::string_view input = "Hello, World!";
std::string hexString = asciiToHex(input);
std::cout << hexString << std::endl;
return 0;
}
これらは、C++でASCII文字列を16進数に変換するための一般的な方法です。必要に応じてこれらの方法を使用してください。また、他の方法も存在するかもしれませんので、ドキュメントやオンラインリソースを参照してさらに学習することをお勧めします。