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 = 1Nun 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 !
