私はC++ストリームAPIにあまり詳しくないので、C++のストリームを使用してCコードを変換したいと思います。
char sHex[20] = {0};
int numid = 2;
snprintf( sHex, sizeof(sHex) - 1, "%X", numId );
stringstream ss;
ss << uppercase << hex << numId;
string res = ss.str();
私を助けたように、それがあなたを助けるかもしれないC++ストリームとストリームバッファを理解することを見てください。