如何正确地将无符号字符转换为CString,并再次将CString的结果反向转换为无符号字符
How to correctly convert unsigned char to CString and once again, reversely convert to the result of CString to unsigned char?
我在将无符号字符转换为CString以及将转换后的CString的结果转换为无符号字符时遇到问题。
首先,我尝试使用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);
}
//////////////////////////
因此,我认为结果3被正确地替换了。
如果我通过ASCII代码看到了"unchar_result",那么unchar_result="?tj?eh9?",结果3也是"?tj?eh9"。
但我想将(CString)result3反向转换为无符号字符矩阵。
unsigned char a;
unsigned char testdecode[8];
for(int i=0; i<8 ; i++){
a=result3.GetAt(i);
testdecode[i]=a
}
转换后,结果为"?tj?eh9?",但值为{63111610663101104157263}。。。我预计结果是{14311610622410110457/157}。
接下来,我再次尝试使用CStringA。
CStringA result6;
result6(unchar_result);
我可以通过调试工具的局部变量窗口看到这个值。然后,结果6是"뢶jh9앀儆?"此外,int len=result6.GetLength()=13。
如何正确地将无符号字符转换为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;
看看文档,您可以从指向字符缓冲区MSDN的指针构造CString。CString类支持的所有操作,您可以使用GetBuffer,函数来获取指向CString内部缓冲区的指针,调用ReleaseBuffer来获得该缓冲区的所有权。
相关文章:
- 从矢量<无符号字符>转换为字符* 包括垃圾数据
- 尝试将字符串/字符转换为整数会产生意外结果
- 如何使用C++将字符串中的字符转换为整数变量
- 字符转换功能 std::isupper() & std::islower() C++17
- 将字符 * 转换为字符串 *
- 在编译时将常量字符* 转换为常量 char_type*
- 如何在 C/C++ 中将无符号字符*转换为无符号字符数组?
- 错误:请求从"常量字符 [5]"转换为非标量类型"字符串"
- 无法使用字符串流将字符转换为字符串C++
- 将无符号字符 C++ 转换为 C#
- C++:使用没有位移位的指针将无符号字符转换为无符号 int
- 为什么我可以隐式地将字符*转换为常量字符*,但不能将无符号字符*
- 无法<string>从"常量字符 []"转换为<类名>
- 不能将字符转换为整数吗?
- 编译时将字符*转换为字节
- CP1251:从字符* 转换为 wchar_t* 时的编码失真
- 将单个字符转换为 std::string 前缀 \x01
- PPM 将字符转换为 int 授予负数
- 通过像printf这样的可变参数函数传递一个带有常量字符*转换函数的类
- 将常量字符* 转换为字符时出错