byteweise manipulation von "größeren" variablen



  • 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 environment

    und

    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


Anmelden zum Antworten