boost/spirit/home/support/detail/integer/endian.hpp を参考に書いてみた 以下のような感じで定義しておいて template <class T, std::size_t S> struct little_endian { static inline void set(char* const buf, const T &t) { *buf = t & 0xff; little_endian<T, S - 1>::set(buf + 1, t >> 8); } static inline T get(const char* const buf) { return *buf | little_endian<T, S - 1>::get(buf + 1) << 8; } }; template <class T> struct little_end