C++ 如何将int转换为LPBYTE
我需要将int值转换为LPBYTE。当我看定义时,是这样显示的。我不知道word说的是什么C++ 如何将int转换为LPBYTE,c++,casting,C++,Casting,我需要将int值转换为LPBYTE。当我看定义时,是这样显示的。我不知道word说的是什么 typedef unsigned char BYTE; typedef BYTE far *LPBYTE; “远”是什么意思 如何将int值转换为LPBYTE 编辑 foo(LPBYTE x){ } int main() { int y = koo(); foo(y); // how to cast here return 0; } 实际代码 int iVa
typedef unsigned char BYTE;
typedef BYTE far *LPBYTE;
foo(LPBYTE x){
}
int main()
{
int y = koo();
foo(y); // how to cast here
return 0;
}
实际代码
int iVal = 0;
LONG res = RegQueryValueEx(hKey, L"UseSystemSeparators", NULL, &lpType, (LPBYTE)iVal, &size);
我不知道这个词说的是什么
far
是一个32位指针,由16位“选择器”组成,有助于确定内存区域的起始地址,以及内存区域中的16位偏移量
您可以按如下方式强制转换变量:
int main()
{
int y = koo();
foo(static_cast<LPBYTE>(&y));
return 0;
}
intmain()
{
int y=koo();
foo(静态演员阵容);;
返回0;
}
如果我理解正确,您需要变量的地址,然后将该地址转换为LPBYTE
然后,您需要使用变量上运算符&
的地址来获取指向该变量的指针,并强制转换该指针:
foo(reinterpret_cast<LPBYTE>(&y));
是一个explanation@JoachimPileborg:int to a pointer能否请您澄清您的问题,是关于
far
关键字的问题?还是关于“转换”为指针?如果是后者,您是想将int
转换为指针,还是想获取指向int
的指针?只是澄清一下,您有一个int
变量,其中包含一个地址?还是要获取int
变量的地址?far关键字可追溯到16位版本的Windows,它将指针声明为32位指针。现在已经不相关了。当您想将int转换为LPBYTE时,您还没有编写足够的64位代码,是时候开始破解了。不,我需要将int变量的值转换为LPBYTE。因为Int hold a resource handler显示带有reinterpret_cast的警告warning C4312:“reinterpret_cast”:从“Int”转换为更大的“LPBYTE”
@nayanadassuriya您会收到警告,因为Int
小于指针。您应该查看分配变量的代码,您是否真的分配了地址并将其存储在变量中?您应该更新问题以显示一些实际代码。@nayanadassuriya倒数第二个参数是指向接收数据的变量的指针,因此您应该阅读我答案的第一部分!否则,由于它是零,这等于传递一个NULL
指针,该指针告诉函数不要读取数据。@Nayanadassuriya您也应该小心,您知道存储在注册表项中的数据等于或小于int
的大小吗?否则,您可能会写得超出它的限制,并以失败告终。
intptr_t y = ...;
foo(reinterpret_cast<LPBYTE>(y));