BYTE[8] in __int64 konvertieren



  • Hallo zusammen,

    ich würde gerne einen BYTE[8] in einen __int64 konvertieren. Ist dies irgendwie einfach und schnell möglich?



  • Zwar nicht elegant aber so meine erste Idee...

    BYTE[8] Zahl1;
    
    // Zahl1 irgendwie initialiseren
    
    // Umwandeln
    __int64 *Zahl2 = (__int64*) (void*) &Zahl1;
    

    Ich weiß jetzt gar nicht ob sogar

    __int64 Zahl2 = (__int64) Zahl1;
    

    klappt...



  • Am sichersten bist du, wenn du deinen int mit Bit-Operatoren (| und <<) zusammenbastelst. Aber wenn du es ganz schnell haben willst, klappt auch reinterpret_cast.



  • @CStoll:

    [quote=CStoll]
    Am sichersten bist du, wenn du deinen int mit Bit-Operatoren (| und <<) zusammenbastelst. Aber wenn du es ganz schnell haben willst, klappt auch reinterpret_cast.
    [/quote]

    Was heißt am sichersten... ist es mit dem reinterpret_cast unsicher? Also kann das Ergebnis falsch sein... oder was ist unsicher daran?

    @Meyer123
    Deine erste Variante klappt... die zweite nicht... warum weiß ich jedoch nicht

    Danke für die beiden schnellen Antworten 🙂



  • reinterpret_cast deutet einfach nur die Bitmuster um - das muß nicht unbedingt mit dem übereinstimmen, was du vorhast. (btw, Meyer's Lösung ist dazu äquivalent - aber C-Casts sind noch unbeliebter als reinterpret_cast ;))



  • Danke CStoll jetzt bin ich wieder klüger :)...

    Eine andere Frage: Gibt es einen direkten Weg diese 64 Bit in einen String umzuwandeln :)? Also BYTE[8] in einen String... ich habs jetzt über den Umweg mit der Methode _i64toa_s gemacht. Deswegen mußte ich die erst in __int64 umwandeln aber vielleicht geht das auch direkt?

    Auf jedenfall nochmal vielen vielen Dank für die super schnelle Hilfe!


Anmelden zum Antworten