byteweise manipulation von "größeren" variablen
-
Im Standard ist nichtmal festgelegt, in welcher Reihenfolge die Bytes betrachtet werden, aber auf eigene Gefahr:
char*c=reinterpret_cast<char*>(&ausgabe).(aber um damit etwas sinnvolles machen zu können, mußt du dich sehr gut auskennen)
-
müsste klappen, short int sollte überall 16bit sein, ist ja halt so definiert.
geht das reinterpret_cast auch in GCC?
-
xlomx schrieb:
müsste klappen, short int sollte überall 16bit sein, ist ja halt so definiert.
geht das reinterpret_cast auch in GCC?
ja
-
xlomx schrieb:
müsste klappen, short int sollte überall 16bit sein, ist ja halt so definiert.
geht das reinterpret_cast auch in GCC?
ja
/Edit: ach verflucht, jetzt kam die 2 mal, bitte eine löschen
-
xlomx schrieb:
müsste klappen, short int sollte überall 16bit sein, ist ja halt so definiert.
Es ist festgelegt, daß short mindestens 16 Bit hat - nach oben ist die Größe offen.
-
Die Diskussion hatte ich schon öfter und ich dachte das wäre erledigt.
Hatte mich mit mir selbst darauf geeinigt, das gilt:
sizeof(char) <= sizeof(short) <= sizeof(int) ..Also muss short nicht mindestens 16 Bit sein. oder?
-
Außer diesen Größenverhältnissen definiert der Standard auch Mindestwerte für die entsprechenden Wertebereiche - z.B. für short von 32000 (müßte ich nachsehen). Und daraus ergibt sich natürlich auch eine Minimalgröße

-
standard schrieb:
Plain ints have the natural
size suggested by the architecture of the execution environmentund
standard schrieb:
that is, large enough to contain any value in the range of INT_MIN and INT_MAX, as defined in the header <climits>.
Damit ist ja eine gewisse Mindestgroesse vorgegeben.
gruss
v R
-
nagut, dann muss ich es vorher abfragen.
das mit den mindestgrößen nervt. ich brauche genau definierte größen. zumindest 8, 16 und 32 bit.

ich habe das so verstanden das int die gleiche länge hat wie der adressbus und der rest ist definiert, aber man lernt nie aus
-
Du koenntest z. b. boost::uint8_t, boost::uint16_t und boost::uint32_t nutzen.
Dafuer muss du auch nicht gegen eine Boost-Lib linken.gruss
v R
-
gut werde das so machen.
das problem ist eigendlich nur, ich benutze das auch in einem µC und da soll ja alles möglichs efficient sein.
-
xlomx schrieb:
gut werde das so machen.
das problem ist eigendlich nur, ich benutze das auch in einem µC und da soll ja alles möglichs efficient sein.
Wenn du die Boost-Lib benutzt, wird garantiert, dass boost::uintXX_t auch
tatsaechlich XX Bits breit ist.Wenn du nicht die komplexen Boost-Includes nutzen willst, koenntest du dir
zumindest ansehen, wie die das machen und es gerade uebernehmen.gruss
v R