Boost.Algorithmには、hex()/unhex()という、MySQL由来の関数があります。
hex()関数は、16進数表現の文字列を10進数表現に戻します。
#include <iostream> #include <string> #include <iterator> #include <boost/algorithm/hex.hpp> int main() { std::string s = "abc"; std::string out; boost::algorithm::hex(s, std::back_inserter(out)); std::cout << out << std::endl; }
616263
unhex()関数は、10進数表現の文字列を16進数表現に変換します。
#include <iostream> #include <string> #include <iterator> #include <boost/algorithm/hex.hpp> int main() { std::string s = "616263"; std::string out; boost::algorithm::unhex(s, std::back_inserter(out)); std::cout << out << std::endl; }
abc
変換に失敗した場合、以下のいずれかの例外が投げられます:
struct hex_decode_error: virtual boost::exception, virtual std::exception {}; struct not_enough_input : public hex_decode_error; struct non_hex_input : public hex_decode_error;
参照:
hex - Boost Algorithm Library
MySQL 5.1 リファレンスマニュアル :: 11.3 文字列関数