Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何将int转换为LPBYTE_C++_Casting - Fatal编程技术网

C++ 如何将int转换为LPBYTE

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

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