#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