Original function.
Code:
void Binary2HexString(const vector<unsigned char>& vec, string& result)
{
	if(vec.size() == 0)
		return;

	for(size_t i = 0; i < vec.size(); i++)
	{
		char temp[4] = {0};
		sprintf(temp, "%02X ", vec[i]);
		result.push_back(temp[0]);
		result.push_back(temp[1]);
		result.push_back(temp[2]);
	}
}

Fixed function.
Any good suggestion for this issue.
I really don't like my fix like this hard-code!
Code:
void Binary2HexString(const vector<unsigned char>& vec, string& result)
{
	if(vec.size() == 0)
		return;

	for(size_t i = 0; i < vec.size(); i++)
	{
		char temp[4] = {0};
		if (vec[i] < 10){
			sprintf(temp, "%02X ", vec[i]);
		}
		// if the vec[i] value bigger than 10, we must take use Dec instead of Hex to handle.
		else{	
			sprintf(temp, "%02d ", vec[i]);
		}
		result.push_back(temp[0]);
		result.push_back(temp[1]);
		result.push_back(temp[2]);
	}
}