kidapu
6/7/2016 - 11:15 AM

floatやintから16進数化したstringが得られる。あんまり使うことなさそう。

floatやintから16進数化したstringが得られる。あんまり使うことなさそう。


class Utils
{
private:
  template< typename T >
  static std::string IntToHex( T i )
  {
    std::stringstream stream;
    stream
    << std::setfill ('0')
    << std::setw(sizeof(T)*2)
    << std::hex << i;
    return stream.str();
  }
  
  static std::string FloatToHex(float val)
  {
    union converter{
      float f_val;
      unsigned int u_val;
    };
    
    union converter var;
    var.f_val = val;
    return IntToHex(var.u_val);
  }
  
public:
  template <typename T>
  static std::string ToHex(T i)
  {
    bool isFloat = bool(typeid(i) == typeid(float));
    std::string out = (isFloat) ? FloatToHex(i) : IntToHex(i);
    return out;
  }
};