gpt4 book ai didi

c - 格式化字节数组

转载 作者:行者123 更新时间:2023-11-30 19:44:35 25 4
gpt4 key购买 nike

我使用函数 readfile() 从预取文件中获取一些字节

BYTE   ReadBuffer[24];

for(i=0; i < 24; (i++))
{
printf("%02X", *(ReadBuffer+i));
}

如果我使用 %02X,我会得到与十六进制编辑器相同的结果:

43 00 4F 00 4E 00 48 00 4F 00 53 00 54 00 2E 00 45 00 58 00 45 00 00 00

如果我使用%C:

C O N H O S T . E X E 

它似乎是UTF-16LE,并且我想要结果 CONHOST.exe(没有空格...)仅使用 WINAPI

我尝试使用 WideCharToMultiByte 但它不起作用..

CHAR AnsiPath[MAX_PATH]
WideCharToMultiByte(CP_ACP, 0, (PWCHAR)Buffer, -1, AnsiPath, sizeof(AnsiPath), NULL, NULL)

有人可以解释一下我失败的地方吗?谢谢

这里是完整的代码

int main(void)
{
HANDLE hFile;
DWORD dwBytesRead = 0;
BYTE ReadBuffer[10266];
DWORD nNumberOfBytesToRead = 10266;

LPCWSTR fname = L"C:\\Windows\\Prefetch\\CONHOST.EXE-3218E401.pf";
hFile = CreateFile(fname,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);


if (!ReadFile(hFile, ReadBuffer, nNumberOfBytesToRead, &dwBytesRead, NULL))
{
printf("Terminal failure: Unable to read from file.\n GetLastError=%08x\n", GetLastError());
CloseHandle(hFile);
}
printf("Data read from %s (%d bytes): \n", fname, dwBytesRead);
wprintf(L"%ld\n", ReadBuffer);
int i;
for(i=16; i < 40; i++)
{
printf("%C ", *(ReadBuffer+i));
}
char AnsiPath[MAX_PATH];
int result = WideCharToMultiByte(CP_UTF8, 0, (PWCHAR)ReadBuffer, -1, AnsiPath, 0,0,0);
printf("\nResult WideCharToMultiByte : %d\n", result);

printf("\nString : %s \n",AnsiPath);
CloseHandle(hFile);
system("pause");
return 0;
}

结果:

Data read from C (9068 bytes):
3199640
C O N H O S T . E X E
Result WideCharToMultiByte : 2

String : ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠
╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠
╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠
╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠(
Appuyez sur une touche pour continuer...

最佳答案

关于您发布的新代码:

看起来您的字符串从 ReadBuffer 的第 16 个字节开始,因此您需要使用 ReadBuffer+16 或其他方式进行转换。

您忘记了 sizeof(AnsiPath),就像您在上面发布的行中一样。

关于c - 格式化字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27920232/

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