Anfängerfrage: Integer aus 3 Byte



  • Hallo,

    ich habe ein Programm (nicht von mir), welches einen Wert unterschiedlich darstellt, z.B.:

    int 2019

    und den gleichen Wert in Form von 3 Byte:

    Byte 0 = 225
    Byte 1 = 248
    Byte 2 = 1

    Nun bin ich schon eine ganze Weile am suchen und finde nicht heraus, wie man aus 225 248 1 einen "int 2019" bekommt.

    Ein Hinweis auf einen Suchbegriff würde mir schon sehr helfen 🙂

    Danke schonmal !

    Grüße
    Julian (Newbie)



  • Bitoperationen ist das Stichwort.
    Z.B.

    int val=(byte2<<16) | (byte1<<8) | byte0;
    

    Das gibt aber 129249 und nicht 2019.
    Es muss sich hier schon um eine sehr abenteuerliche Darstellungsweise handeln.



  • Athar schrieb:

    Bitoperationen ist das Stichwort.
    Z.B.

    int val=(byte2<<16) | (byte1<<8) | byte0;
    

    Das gibt aber 129249 und nicht 2019.
    Es muss sich hier schon um eine sehr abenteuerliche Darstellungsweise handeln.

    Bitoperationen berücksichtigen hier die Endianess nicht genügend.
    Sieh Dir die Bytes an, indem Du das hier probierst:

    unsigned char a[sizeof int];
            int b = 2019;
            *(int*)a = b;
    


  • otto8 schrieb:

    Bitoperationen berücksichtigen hier die Endianess nicht genügend.

    Da Big-Endian hier noch weitaus weniger Sinn machen würde (14809089), habe ich für das Beispiel Little-Endian gewählt.



  • Super, danke !

    Jetzt bin ich schonmal ein ganzes Stück weiter.

    Dieser Wert (129249) wird in dem Programm auch angezeigt, aber nur in Zusammenhang mit dem anderen Wert 2019.

    Hier mal ein Beispiel, was in dem Prog ausgegeben wird:

    ReadSSI return value: 129249
    Position: 2019
    ...
    ReadSSI return value: 157345
    Position: 2458
    ...
    ReadSSI return value: 45025
    Position: 703
    ...

    Kann der Wert für "Position" aus dem Wert von "ReadSSI return value" abgeleitet worden sein ?
    Stehe auf dem Schlauch ...



  • Ja, mit /64.
    Das ist also eine binäre Festkommazahl mit 6 Nachkommastellen.
    Oder Kacheln sind 64cm lang und breit.



  • Das ist die Lösung. Ihr seid Spitze 👍

    Vielen Dank ! 🙂


Anmelden zum Antworten