これこれ

いつもsprintf()で釈然としないdumpコードを書いていたのですが
仕事場も落ち着いたことだし多少真面目にやってみました。
相変わらずアロケーションSTLに押し付けていますが‥それでいいんです。

std::vector < BYTE > bvec; // ここにBYTE配列が入る前提で

string strData;
size_t len = bvec.size();
for(size_t i=0; i<len; i++)
{
 unsigned char base = bvec.at(i);

 BYTE b1 = base >> 4;
 BYTE b2 = base << 4;
 BYTE b3 = b2 >> 4;
  
 char c1 = 0;
 char c2 = 0;

 if( b1 < 0x0A ) { c1 = 0x30 + b1; } else{ c1 = (0x60-0x09) + b1; } // (0x60-0x09)はコメントみたいなもので
 if( b3 < 0x0A ) { c2 = 0x30 + b3; } else{ c2 = (0x60-0x09) + b3; } // 気にしないように!w

 char via[5] = {0x30, 0x78, 0x00, 0x00, 0x00};
 {
  via[2] = c1;
  via[3] = c2;
  strData = strData + via;
 }
}
printf(" Data\n [%s]\n", strData.c_str());

問題はsprintfとどっちが早いかってこと‥。
ざっくりとテストしてみたら、早いけど僅差だねえ。あららw