#include <iostream>
#include <sstream>
#include <string>
#include <vector>
#include <array>
#include <cstdint>
#include <iomanip>

template <typename C>
std::string hex_str(const C& data)
{
	std::ostringstream output;
	output << std::hex << std::setw(2) << std::setfill('0');
	for(const auto &elem : data)
		output << static_cast<unsigned>(elem);
	return output.str();
}

int main() {
	std::array<uint8_t, 5> arr = {0x48, 0x65, 0x6c, 0x6c, 0x6f};
	std::cout << hex_str(arr) << std::endl;

	std::vector<uint8_t> vec = {0x48, 0x65, 0x6c, 0x6c, 0x6f};
	std::cout << hex_str(vec) << std::endl;
}