BYTE const in const char* konvertieren



  • Hi Leute,

    ich habe eine Funktion in der ich ein "BYTE const" in "const char*" konvertieren muss. Hier die Funktion:

    void CFWLoaderDlg::SerOut(BYTE const byData)
    {
    const char* data;
    data = byData;??????
    m_serial.SendData(data,1);
    }

    Hab ich schon mit static_cast versucht, fünzt aber nicht.

    Könnt Ihr mit helfen?

    Danke im voraus.

    Grüsse
    xthing



  • xthing schrieb:

    Hab ich schon mit static_cast versucht, fünzt aber nicht.

    Wie sah denn dieser cast aus, und was kam für ne Fehlermeldung?



  • BYTE ist ein (unsigned) char, char* ist ein Zeiger - also mußt du die Adresse deines Wertes übergeben:

    void CFWLoaderDlg::SerOut(BYTE const byData) 
    { 
      const char* data; 
      data = &byData;//notfalls static_cast<char*>(&byData)
      //wichtig ist hier das & vor der Variablen
      m_serial.SendData(data,1); 
    }
    


  • CStoll schrieb:

    BYTE ist ein (unsigned) char....

    ... womit auch das const recht überflüssig ist, oder ?
    😉

    Gruß,

    Simon2.



  • @CStoll, danke, aber jetzt kommen bei beiden Versionen die Fehlermeldungen:

    error C2440: 'static_cast': 'const BYTE *__w64 ' kann nicht in 'char *' konvertiert werden

    Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.

    Was ist falsch?

    Danke noch maö.

    Grüsse
    xthing



  • Du versuchst das const ohne const_cast wegzucasten. Imho:

    const char* data = reinterpret_cast<const char*>(&byData);
    


  • Danke jetzt klappt es.

    Grüsse
    xthing


Anmelden zum Antworten