字串(String)轉換成ASCII編碼

有時會需要進行 ASCII 編碼與文字的互轉,小弟用C++寫了兩個小 Function 以方便進行 String 與 ASCII 的相互轉換,不過轉成的 ASCII Code 是16進位的,若有需要請自行修改


//------------ String to HexAscii -----------------//
//Example: ABCD ==> 41424344
void StringToHexAscii(char *in, char *out){
char *buf = new char(sizeof(char)*2);
string str;
for ( int i = 0; i < sizeof(&in); i++ ) {
char c = in[i];
sprintf(buf,"%X",c); //Dec => Hex
str.append(buf);
}
strcpy (out, str.c_str());
}

//------------ HexAscii to String-----------------//
//Example: 41424344 ==> ABCD
void HexAsciiToString(char *in, char *out){
char *buf = new char(sizeof(char)*2);
string str;
for ( int i = 0; i < sizeof(&in)*2; i+=2 ) {
char c[2];
c[0] = in[i];
c[1] = in[i+1];
int nub = atoi(c);
nub = (nub/10)*16 + nub%10; //Dec => Hex
char cc;
sprintf(&cc,"%c",nub); //int => char
str.append(&cc);
}
strcpy (out, str.c_str());
}

int main()
{
char *cstr = "ABCD";
char cHexOut[8];
char cStrOut[4];
StringToHexAscii(cstr, cHexOut);
cout << "ABCD to Hex is: " << cHexOut << endl;
HexAsciiToString(cHexOut, cStrOut);
cout << "Hex 41424344 to String is: " << cStrOut << endl;
system("pause");
return 0;
}

0 意見: