Created
July 29, 2015 06:08
-
-
Save hassaananjum/097ae03e1c09c446ce2d to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <string.h> | |
#include <bitset> | |
#include <iostream> | |
std::string hex_to_binary(std::string hexstring){ | |
static char base16encoding_table[] = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'}; | |
std::string binstring; | |
for( int i = 0; i < hexstring.length(); i++){ | |
binstring += std::bitset<4>((int)(strchr(base16encoding_table,hexstring[i]) - base16encoding_table)).to_string(); | |
} | |
return binstring; | |
} | |
std::string binary_to_b64(std::string binstring){ | |
static char base64encoding_table[] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/'}; | |
std::string b64string; | |
for(int i = 0; i < binstring.length(); i+=6){ | |
int end = i+6; | |
std::string charstring = binstring.substr(i,end); | |
int newint = std::bitset<6>(charstring).to_ulong(); | |
b64string += base64encoding_table[newint]; | |
} | |
return b64string; | |
} | |
std::string hex_2_b64(std::string hexstring){ | |
return binary_to_b64(hex_to_binary(hexstring)); | |
} | |
int main(int argc, char** argv){ | |
if(argc < 2){ | |
std::cout<<"USAGE:"<<std::endl; | |
std::cout<<"hex2b64 <hex string>"<<std::endl; | |
} | |
else{ | |
std::string hexstring(argv[1]); | |
std::cout<<"HEX String : "<<hexstring<<std::endl; | |
std::cout<<"B64 Srting : "<<hex_2_b64(hexstring)<<std::endl; | |
} | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment