Тут возник спор о "искусстве раде искусства"
Вот две ф-ии для форматирования бинарных данных:
template<typename OStream, size_t LineLen>
size_t FormatByteLine(OStream& out, size_t count, unsigned char data)
{
if(!(count++%LineLen)) out << "\n\t";
out << std::hex << std::setw(2) << std::setfill('0') << (int)data << ' ';
return count;
}
std::string FormatData(unsigned char* begin,unsigned short len)
{
std::stringstream str;
str << std::hex ;
size_t count=0;
unsigned char* end=begin+len;
for(unsigned char* it=begin; it!=end; ++it)
count=FormatByteLine<std::stringstream, 12>(str, count, *it);
return str.str();
}
А теперь таже ф-я FormatData только в модной обертке:
std::string FormatData(unsigned char* begin,unsigned short len)
{
std::stringstream str;
str << std::hex ;
std::accumulate( begin, begin+len, 0,
boost::bind(FormatByteLine<std::stringstream, 12>, boost::ref(str),
boost::arg<1>(), boost::arg<2>()));
return str.str();
}
А теперь вопрос: Стоила овчинка выделки?