これこれ
いつも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