请问如何将LPBYTE转换成char
谢谢了

解决方案 »

  1.   

    下面是LPBYTE的定义:
    typedef unsigned char       BYTE;
    typedef BYTE far            *LPBYTE;
    如果没有特别需求的话,直接转就好了。
    LPBYTE pByte;
    char cC = *pByte;
      

  2.   

    LPBYTE可以强制转换成char*类型,不能转换为char。
      

  3.   

      BYTE   b   =   100;   
      LPBYTE   pByte=&b;   
      char*   pb=reinterpret_cast<char*>(pByte);
      

  4.   

    LPBYTE是一个指针类型,不过可以直接赋值,但是不能转换。
    LPBYTE pByte; 
    char ch = *pByte;
      

  5.   

    LPBYTE lpBuffer;
    char *buf = (char *)lpBuffer;
    MessageBox(NULL, buf, "Info", MB_OK);这样可以转换就是后面有乱码
    请问怎么回事
      

  6.   

    如果lpBuffer指向的不是正常的字符串(例如是二进制数据),就不能当作字符串来显示。
      

  7.   


    楼主,你给lpbuffer指向的内容是什么?如果是一串以'\0'结束的字符串,就没有问题,如果根本不是字符,而是数字或者该字符串不是以'\0'来标识结尾的,就不能这么用,而是要取得字符串长度再strcpy_s(..)得到指定长度的内容。因为非字符的显示会是乱码,或者由于你没有'\0'中止符,多取得的未知内存中的内容也是乱码的,这个很正常。建议楼主在给BYTE类型的地址赋值后,在接着的后一个元素上设置'\0',或者使用memset(...)为初始化这个BYTE类型的地址块。这样默认情况下,其每一位都会是'\0',有用的内容写入后,前面的就变成了实际的内容,后面的还是'\0',就不会造成乱码的情况了。
      

  8.   

    做通讯接口呢?
    从LPBYTE里得到的东西,一般都是这样处理的,不对接收缓冲直接操作
    char buf[某个长度];
    memcpy(buf,lpBuffer,sizeof(你定义的长度或者是通讯报文里的字串长));
    buf[你定义的长度或者是通讯报文里的字串长] = '\0';
      

  9.   

    应该可以直接使用啊,不知你的意思,不行加&符
      

  10.   

    我实在太菜了,请大家帮我看一下把
    以下是写入程序//把文本写入文件的资源里去FileName1 文件名
    str 文本BOOL CDisposionServer::AddRessName(LPCTSTR FileName1, CString str)
    {
    LPBYTE lpBuffer=0; HANDLE hResource;

    hResource = BeginUpdateResource(FileName1, FALSE);//给文件里面写内容
    if (NULL != hResource)
    {
    lpBuffer   =   (LPBYTE)(LPCSTR)str;//把CString转换成LPBYTE类型
    int nLength = str.GetLength();//的到str的大小

    if (UpdateResource(hResource, 
    RT_RCDATA, 
    MAKEINTRESOURCE(129), //把文本写到资源的129里面
    MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED), 
    (LPVOID)lpBuffer, 
    nLength) != FALSE)
    {
    EndUpdateResource(hResource, FALSE);
    }
    else return 0;
    }
    else return 0;
    return 1;
    }以下是读文本的程序BOOL ReadJpgInfo()
    {
    //得到自身路径
    TCHAR exeFullPath[MAX_PATH]; // MAX_PATH在API中定义为 128 
    GetModuleFileName(NULL,exeFullPath,MAX_PATH); HMODULE hLibrary;
    HRSRC hResource;
    HGLOBAL hResourceLoaded;
    LPBYTE lpBuffer;
    hLibrary = LoadLibrary(exeFullPath);
    if (NULL != hLibrary)
    {
        hResource = FindResource(hLibrary, MAKEINTRESOURCE(129), RT_RCDATA);
        if (NULL != hResource)
        {
            hResourceLoaded = LoadResource(hLibrary, hResource);
            if (NULL != hResourceLoaded)        
            {
                lpBuffer = (LPBYTE)LockResource(hResourceLoaded);            
                if (NULL != lpBuffer)            
                {                
    DWORD dwFileSize;
    dwFileSize = SizeofResource(hLibrary, hResource);

    char*  buf=reinterpret_cast <char*>(lpBuffer); MessageBox(NULL, buf, "Info", MB_OK);//buf里面的字符后面有乱码
    }
            }
        }
    else
    {
    FreeLibrary(hLibrary);
    return 0;
    }
    }
    return 1;
    }
      

  11.   

    你是说把他转换成BYTE数组吧要不指针怎么可能转字符呢看到上面那么多高手汗个····