gpt4 book ai didi

c - 获取包含十六进制值的 LPTSTR 或 CHAR* 的大小

转载 作者:可可西里 更新时间:2023-11-01 09:25:49 29 4
gpt4 key购买 nike

我尝试使用以下代码获取 LPTSTR 变量和 CONST CHAR 变量的大小,但无法获取正确的大小。

我应该得到 20,但我得到的是 const char* 变量的 0 和 LPTSTR 变量的 4。

const char *var1 =  "\x00\x00\x00\x00"
"\x00\x00\x00\x00"
"\x02\x00\x00\x00"
"\x5B\xE0\x5B\xE0"
"\x00\x00\x00\x00";

LPTSTR var2 = "\x00\x00\x00\x00"
"\x00\x00\x00\x00"
"\x02\x00\x00\x00"
"\x5B\xE0\x5B\xE0"
"\x00\x00\x00\x00";

printf("%d", sizeof(var1)); // this outputs 0
printf("%d", sizeof(var2)); // this outputs 4

我需要获取值的大小,然后使用以下函数将其作为二进制数据 (REG_BINARY) 插入到 Windows 注册表中:

lRes = RegSetValueEx(hMykey, "Scancode Map", 0, REG_BINARY, (LPBYTE) var2, sizeof(var2));

最佳答案

var1的类型是const char*var2的大小是LPTSTR(即你的案例是 char* 的别名)。 sizeof var1 等价于 sizeof (const char*),而不是它指向的字符数组的大小。在您的平台上,sizeof (char*) 是 4 个字节。

你可以这样做:

const char var1[] = { 0x00, 0x00, ..., 0x00 };

然后 sizeof var1 将等同于 sizeof (const char[20]),这就是您想要的。

关于c - 获取包含十六进制值的 LPTSTR 或 CHAR* 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9968754/

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