Comment convertir correctement un caractère non signé en CSsortingng et une fois encore, convertir inversement le résultat de CSsortingng en caractère non signé?

J’ai des problèmes avec la conversion de caractère non signé en CSsortingng et inversement, la conversion du résultat de CSsortingng converti en caractère non signé.

D’abord, j’essaie d’utiliser CSsortingng.append () ;.

///////////////////////////////

CSsortingng result2; CSsortingng result3; unsigend char unchar_result[9]; unchar_result = {143, 116, 106, 224, 101, 104, 57, 157}; unchar_result[8] = NULL; for(int i=0; i<8; i++){ result2=(char)temp[i]; result3.append(result2); } 

//////////////////////////////

en conséquence, je pense que result3 a été correctement substitué.

si j’ai vu ‘unchar_result’ avec le code ASCII, alors unchar_result = “? tj? eh9?” et result3 était “? tj? eh9?” aussi.

Mais je veux inversement convertir (CSsortingng) result3 en masortingce de caractères non signée.

 unsigned char a; unsigned char testdecode[8]; for(int i=0; i<8 ; i++){ a=result3.GetAt(i); testdecode[i]=a } 

après conversion, le résultat était “? tj? eh9?” mais la valeur était {63, 116, 106, 63, 101, 104, 57, 63} … je suppose que le résultat était {143, 116, 106, 224, 101, 104, 57, 157}.

Ensuite, j’essaie à nouveau avec CSsortingngA.

 CSsortingngA result6; result6(unchar_result); 

et je peux voir la valeur à travers la fenêtre de variable locale de l’outil de débogage. alors, résultat6 était “j? h9 앀 儆?” De plus, int len ​​= result6.GetLength () = 13.

Comment convertir correctement les caractères non signés en CSsortingng et faire l’inverse?

La conversion en CSsortingng est assez facile, il suffit de transmettre le caractère unsigned char* au c’tor. La conversion de CSsortingng en unsigned char* est un peu plus de travail, voir ci-dessous.

 unsigned char orig[] = "hello world"; std::cout << orig << " (unsigned char *)" << std::endl; // Convert to a CString CString cstring(orig); std::cout << cstring << " (CString)" << std::endl; // Convert to a unsigned char* const size_t newsize = (cstring.GetLength() + 1); unsigned char* nstring = new unsigned char[newsize]; strcpy_s((char*)nstring, newsize, cstring); std::cout << nstring << " (unsigned char*)" << std::endl; 

Regardez la documentation, vous pouvez construire CSsortingng à partir d’un pointeur sur le tampon de caractères MSDN . Toutes les opérations sockets en charge pour la classe CSsortingng , vous pouvez utiliser GetBuffer, fonction pour obtenir un pointeur sur le tampon interne de CSsortingng, appelez ReleaseBuffer pour s’approprier ce tampon.