#include "StdAfx.h"
#include <malloc.h>
#include <string.h>
#include <stdlib.h>
//带有汉字的字符串与ASCII码相互转换
class AsciiTranslation
{
public:
AsciiTranslation();
~AsciiTranslation();
char * CharactertoASCII(char * input);
char * ASCIItoCharacter(char * input);
private:
};
AsciiTranslation :: AsciiTranslation()
{
}
AsciiTranslation :: ~AsciiTranslation()
{
}
char * AsciiTranslation :: CharactertoASCII(char * input)
{
char nameone[4]={0};
char * name=NULL;
int test = 0;
unsigned char *p = NULL;
p = (unsigned char *)input;
name = (char *)malloc(3* strlen(input) + 1);
memset(name,0,(3*strlen(input) + 1));
for (int i=0;i<strlen(input);i++)
{
sprintf(nameone,"%d",p[i]);
test = strlen(nameone);
if (2 == test)
{
nameone[2] = nameone[1];
nameone[1] = nameone[0];
nameone[0] = '0';
}
if (1 == test)
{
nameone[2] = nameone[0];
nameone[1] = '0';
nameone[0] = '0';
}
strncat(name,nameone,(3* strlen(input) + 1));
}
return name;
}
char * AsciiTranslation :: ASCIItoCharacter(char * input)
{
char character[4] = {0};
char * Chinese = NULL;
char * temp = NULL;
int c;
Chinese = (char *)malloc(strlen(input)/3 + 1);
memset(Chinese,0,(strlen(input)/3 + 1));
temp = input;
for (int i=0;i<strlen(input)/3;i++)
{
strncpy(character,temp,3);
c=atoi(character);
Chinese[i] = c;
temp = temp+3;
}
Chinese[strlen(input)/3] = '\0';
return Chinese;
}
int main(int argc, char* argv[])
{
AsciiTranslation ascii;
char * name1 = ascii.CharactertoASCII("知道汉字的ASCII码,输出汉字!");
printf_s("ascii: %s len: %d \n",name1,strlen(name1));
char * chine = ascii.ASCIItoCharacter(name1);
printf("Chinese = %s\n",chine);
return 0;
}