由于之前请教时没有附带内存数据,本次我直接拷贝了一份内存数据出来;
待定问题:复制出的内存数据(字符串)编码形式不限,请协助判断;
目的:对比 内存字符串 与目标字符串;
要求:请仔细阅读代码并给出指导性建议或方法,不要水评论。学习时间很宝贵。
源代码如下:
#include <QtCore/QCoreApplication>
#include <QDebug>
#include <Windows.h>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QString str2 = "我爱中国";
qDebug() << "str2=" << str2 << endl;
qDebug() << "toUtf8" << str2.toUtf8() << endl;
qDebug() << "toLatin1" << str2.toLatin1() << endl;
qDebug() << "toLocal8bit" << str2.toLocal8Bit() << endl;
std::string str = "我爱中国";
printf("%s\n\n", str); //修改点1
printf("%s\n\n", str.c_str());// 就是协助打印出 str
qDebug() << "str=" << str.c_str() << endl;
DWORD 内存地址 = (DWORD)malloc(8);
//二进制:CE D2 B0 AE D6 D0 B9 FA
*(DWORD*)内存地址 = 0xAEB0D2CE;
*(DWORD*)(内存地址+0x4) = 0xFAB9D0D6;
std::string 解析字符串1 = (char*)内存地址;
printf("STRING 1:%s\n\n", 解析字符串1.c_str());
if(str == 解析字符串1.c_str())
{ //解释 为何 str != 解析字符串1
//如果是编码的原因 该如何解决使我达到匹配对比的目的
printf("STRING 1:%s\n\n", 解析字符串1.c_str());
}
else
{
printf("Failed Matching\n\n");
}
QString 解析字符串2 = (char*)内存地址;
//修改本句代码 使读取出解析字符串2并与 str2对比
//注意 如果存在编码问题时,需给出相应的解决办法;
if (str2 == 解析字符串2)
{
printf("Successful Matching\n\n");
}
else
{
printf("Failed Matching\n\n");
}
return a.exec();
}
结果如下所示:
还请不要随便找个GPT结果 请给出指导性建议;上个问题由于很多水答案的可能要结题。谢谢各位。
尽可能 通俗易懂,谢谢