#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; }