#include <iostream>
#include <string>
#include <unordered_map>
std::string bin_to_hex(std::string binary) {
binary = std::string(binary.length() % 4 ? 4 - binary.length() % 4 : 0, '0') + binary;
std::unordered_map<std::string, char> hex_dict = {
{"0000", '0'}, {"0001", '1'}, {"0010", '2'}, {"0011", '3'},
{"0100", '4'}, {"0101", '5'}, {"0110", '6'}, {"0111", '7'},
{"1000", '8'}, {"1001", '9'}, {"1010", 'A'}, {"1011", 'B'},
{"1100", 'C'}, {"1101", 'D'}, {"1110", 'E'}, {"1111", 'F'}
};
std::string hexadecimal;
for (size_t i = 0; i < binary.length(); i += 4) {
std::string group = binary.substr(i, 4);
hexadecimal += hex_dict[group];
}
return hexadecimal;
}
int main() {
std::string binary = "110001110";
std::cout << bin_to_hex(binary) << std::endl;
return 0;
}