其他分享
首页 > 其他分享> > c – 如何正确地将unsigned char转换为CString并再次反向转换为CString到unsigned char的结果?

c – 如何正确地将unsigned char转换为CString并再次反向转换为CString到unsigned char的结果?

作者:互联网

我有将unsigned char转换为CString的问题,反过来,将转换后的CString的结果转换为unsigned char.

首先,我尝试使用CString.append();.

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

CString result2;
CString 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);
}

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

结果,我认为result3被正确替换了.

如果我通过ASCII码看到’unchar_result’,那么unchar_result =“?tj?eh9?”和result3是“?tj?eh9?”太.

但我想将(CString)result3反向转换为unsigned char矩阵.

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

}

转换后,结果是“?tj?eh9?”但是,值是{63,116,106,63,101,104,57,63} ……我期望结果是{143,116,106,224,101,104,57,157}.

接下来,我再次尝试使用CStringA.

CStringA result6;
result6(unchar_result);

我可以通过调试工具的局部变量窗口看到该值.那么,结果6是“뢶j?h9앀儆?”此外,int len = result6.GetLength()= 13.

如何正确地将unsigned char转换为CString并做反向?

解决方法:

转换为CString非常简单,只需将unsigned char *传递给c’tor即可.从CString到unsigned char *的转换是一项更多的工作,见下文.

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;

标签:c-strings,c
来源: https://codeday.me/bug/20190825/1718187.html