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