gpt4 book ai didi

c - 努力将 LPBYTE 转换为 char* 或 C 中的类似内容(中文输出?)

转载 作者:行者123 更新时间:2023-11-30 20:03:51 26 4
gpt4 key购买 nike

我正在处理一个 C 项目,但遇到了问题。该程序读取 .php 页面回显的字符串。它使用这个代码读取数据并将其指定给一个变量,该变量将发送到 Commands() 函数:

LPSTR szBuffer=(LPSTR)chunk+0x1000;
DWORD dwRead;

if (CWA(_HttpSendRequestA, wininet, hHttpRequest, szHeaders, lpstrlenA(szHeaders), szReq, lpstrlenA(szReq)) != 0)
{
CWA(_InternetReadFileA, wininet, hHttpRequest, szBuffer, 0x400, &dwRead);
if (dwRead)
Commands((LPBYTE)szBuffer, dwRead);
}

如您所见,数据被发送到 Commands() 函数,该函数接收 LPBYTE szBuffer(在函数中名为“command”)和 DWORD dwRead(在函数中名为“size”)。

在 Commands() 函数中,它应该读取从 .php 页面读取的字符串。然而,由于数据似乎存储为 LPBYTE,我做了很多事情试图将其转换为 char*。然而,当我认为我终于得到它时,我尝试使用 MessageBox 输出它(以查看它是否显示它应该读取的字符串)。但是,这会返回中文字符(而原始字符串应该是这样的:

“TASKci=0C73CCFD206BBD011E7087CE0806E6F6E69630,job=dlex,ti=AD62A5950B76F3812C542C24040EACE9,pr=https,ur=//test.com/test.txt,cl=”。

它返回给我的屏幕截图:http://prntscr.com/h0p5iw

Commands() 中的代码看起来如何:

BOOL Commands(LPBYTE command, DWORD size) {

LPTSTR x = (LPTSTR)((char*)command);

{

int msgboxID = MessageBox(
NULL,
x,
(LPCWSTR)L"Woop",
MB_ICONWARNING | MB_CANCELTRYCONTINUE | MB_DEFBUTTON2 );

}


CWA(Sleep, kernel32, 100);

return 1; }

我是 C 新手(我以前只用 C# 写过东西),所以如果我问任何愚蠢的问题,我很抱歉,我真的已经尽力了,但我自己似乎找不到任何解决方案。

此外,请记住,除了 Commands() 函数内的内容之外的所有内容都不是由我编写的,而是由更有经验的人编写的。该代码应该没问题,我确信它正在从页面读取数据,这可能只是我在某个地方搞砸了转换。

最佳答案

窄字符串 (char*) tends to look like Chinese当您在需要宽 UTF-16 Unicode 字符串的地方使用它时。

你不能仅仅通过转换字符串来改变它的类型,你需要调用 MultiByteToWideChar .

关于c - 努力将 LPBYTE 转换为 char* 或 C 中的类似内容(中文输出?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46880051/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com