C#下ASCII码转字符串

typedef vector<string> StrVector;
void ASCII2String(const char * sz, StrVector& v1)
{
	int val = 0;
	string str;
	const char * p = sz;
	while (*p)
	{
		str = "";
		val = (int)*p;
		val &= 0x000000ff;
		while (val)
		{
			switch (val%16)
			{
			case 0xF:
				str = "F"+str;
				break;
			case 0xE:
				str = "E"+str;
				break;
			case 0xD:
				str = "D"+str;
				break;
			case 0xC:
				str = "C"+str;
				break;
			case 0xB:
				str = "B"+str;
				break;
			case 0xA:
				str = "A"+str;
				break;
			case 0x9:
				str = "9"+str;
				break;
			case 0x8:
				str = "8"+str;
				break;
			case 0x7:
				str = "7"+str;
				break;
			case 0x6:
				str = "6"+str;
				break;
			case 0x5:
				str = "5"+str;
				break;
			case 0x4:
				str = "4"+str;
				break;
			case 0x3:
				str = "3"+str;
				break;
			case 0x2:
				str = "2"+str;
				break;
			case 0x1:
				str = "1"+str;
				break;
			case 0x0:
				str = "0"+str;
				break;
		
			}
			val = val / 16; 
		}
		str = "0x"+str;
		v1.push_back(str);
		p++;
	}
}
void Output(const char * sz, StrVector& v1)
{
	fstream fouts;
	fouts.open("d:\\dev\\1.txt", fstream::out|fstream::app);
	if (!fouts.bad())
	{
		fouts<<sz<<"\n";
		for(StrVector::iterator it = v1.begin(); it != v1.end(); it++)
		{
			fouts<<*it<<", ";
		}
		fouts<<"\n";
	}
}
int main( void )
{ 
	StrVector v1;
	char sz[255] = {0};
	sprintf(sz, "%s", "香港");
	ASCII2String(sz, v1);
	for(StrVector::iterator it = v1.begin(); it != v1.end(); it++)
	{
		cout<<*it<<", ";
	}
	cout<<endl;
	Output(sz, v1);
	memset(sz, 0, sizeof(sz));
	v1.clear();
	sprintf(sz, "%s", "香港列表");
	ASCII2String(sz, v1);
	for(StrVector::iterator it = v1.begin(); it != v1.end(); it++)
	{
		cout<<*it<<", ";
	}
	cout<<endl;
	Output(sz, v1);
	return 0;
}


原文地址:https://www.cnblogs.com/rogerroddick/p/2846719.html