c++ - 如何将 int 转换为 LPBYTE

标签 c++ casting

我需要将 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 .

然后你需要使用寻址运算符&在变量上获取指向变量的指针,并转换该指针:

foo(reinterpret_cast<LPBYTE>(&y));

如果变量实际上包含一个地址,那么您首先必须非常小心,因为不能保证 int可以保存内存地址(即指针)。以 64 位系统为例,其中指针是 64 位,但是 int通常仍然是 32 位类型。

改用 intptr_t保证足够大以容纳 int或指针。

然后你应该做例如

intptr_t y = ...;

foo(reinterpret_cast<LPBYTE>(y));

<罢工>

关于c++ - 如何将 int 转换为 LPBYTE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29093433/

相关文章:

c++ - 使用信号中止功能实现

sql - 将 INT 转换为 DATETIME (SQL)

Java 泛型和转换为原始类型

c++ - 使用 Qt 5.2 静态库编译时在 Windows 上加载 Qt 应用程序时出错

c++ - 可变参数模板 : choose the tuple element type that has a proper method

c++ - 删除一个 char 数组指针会触发一个神秘的断点

c++ - 在 vector 中存储指向 auto_ptr 的指针

kotlin - 将 List<T?> 转换或转换为 List<T>?

java - 从二维数组中删除元素

java - Scala:转换一个对象并将其分配给一个变量