int md_len=5; char md_value[5]={0x12,0x21,0x34,0x54,0x66}; // double the size char* base_ptr = new char(md_len * 2); // char* chars="0123456789ABCDEF"; int main(int argc, char* argv[]) { char* dest_ptr=base_ptr; memset (dest_ptr,0,10); for(int j = 0; j < md_len; j++) { *dest_ptr++=chars[(md_value[j]&0xf0)>>4]; *dest_ptr++=chars[(md_value[j]&0xf)]; } printf("%s\n",base_ptr); return 0; }