繁体   English   中英

如何将int转换为LPBYTE

[英]How to convert int to LPBYTE

我需要将int值转换为LPBYTE。 当我查看定义时就是这样显示的。 我不知道什么是far话说。

typedef unsigned char       BYTE;
typedef BYTE far            *LPBYTE;
  1. “远”是什么意思
  2. 如何将int值转换为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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM