バイト配列を 16 進数文字列に変換する方法を検討しています。ここでコーディングしたものを次に示します。
unsigned char buffer[] = {0xAA,0xBB,0x01,0xAB,0x11,0x12,0x13,0x22,0x11,0x14};
int _tmain(int argc, _TCHAR* argv[])
{
                char * asta = (char*)malloc(16);
                memset(asta,0,16);
                int k;
                for (k = 0; k < 16 ; k++)
                {
                    sprintf(&asta[k],"%X",buffer[4 + k]);
                }
                printf("%s",asta);
    _getch();
}
最初のバイトのみが正しく変換され、残りは正しく変換されません。コードを修正するにはどうすればよいですか?