带有汉字的字符串与ASCII码相互转换


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



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值