[英]How to convert int to LPBYTE
我需要将int值转换为LPBYTE。 当我查看定义时就是这样显示的。 我不知道什么是far
话说。
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);
如果我理解正确,则需要该变量的地址 ,然后将该地址转换为LPBYTE
。
然后,您需要在变量上使用address-of运算符&
以获得指向该变量的指针,并将该指针转换为:
foo(reinterpret_cast<LPBYTE>(&y));
如果变量实际上保存一个地址,那么您首先必须非常小心,因为不能保证
int
可以保存一个内存地址(即一个指针)。
例如,在指针为64位的64位系统上,但
int
通常仍为32位类型。
使用
intptr_t
代替,后者必须足够大以容纳
int
或指针。
那你应该做例如
intptr_t y = ...; foo(reinterpret_cast<LPBYTE>(y));
我不确定说的话到底是什么。
far
是一个32位指针,该指针由有助于确定存储区起始地址的16位“选择器”和进入存储区的16位偏移量组成。
您可以像这样转换变量:
int main()
{
int y = koo();
foo(static_cast<LPBYTE>(&y));
return 0;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.