C++でのASCIIから16進数への変換方法


方法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進数に変換するための一般的な方法です。必要に応じてこれらの方法を使用してください。また、他の方法も存在するかもしれませんので、ドキュメントやオンラインリソースを参照してさらに学習することをお勧めします。