#include <string.h> #include <stdio.h> #include <iostream> #include <cmath> using namespace std; const char hexmap[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'}; static void ascii2hex(char *asc, char *hexout) { for (int i = 0; i < strlen(asc); ++i) { hexout[2 * i] = hexmap[(asc[i] & 0xF0) >> 4]; hexout[2 * i + 1] = hexmap[asc[i] & 0x0F]; } }//ascii2hex static void hex2ascii(char *hexStr, char *asciiString) { size_t len = strlen(hexStr); int k=0; for (size_t i = 0; i < len; i+=2) { asciiString[k++] = (((hexStr[i] >= 'A')? (hexStr[i] - 'A' + 10): (hexStr[i] - '0')) << 4) | (((hexStr[i+1] >= 'A')? (hexStr[i+1] - 'A' + 10): (hexStr[i+1] - '0'))); } asciiString[k] = '\0'; }//hex2ascii int main () { char a[]="HI EVERYBODY"; cout << a << endl; char *b = new char [ (strlen(a) * 2) + 1 ]; ascii2hex(a,b); cout << "ascii2hex:\n" << b << "\nSIZE:" << strlen(b) << endl; char *c = new char [ (strlen(b) /2 ) + 1 ]; hex2ascii(b,c); cout << "hex2ascii:\n" << c << "\nSIZE:" << strlen(c) << endl; delete [] b; delete [] c; }//main
By: Mehdi Sadighian
Contact: mehdi.sadighian@hotmail.com
TAG: C, C++, ascii to hex, hex to ascii, char array