Zugriff auf einzelne Bytes



  • Wieso das?



  • Wenn ein char 16 Bit hat, und ich ein Array von chars habe, dann springt er doch von Element zu Element um 16 Bit weiter, nicht? Das heisst, ein char besteht eigentlich aus zwei Bytes.



  • Stefan schrieb:

    Wenn ein char 16 Bit hat, und ich ein Array von chars habe, dann springt er doch von Element zu Element um 16 Bit weiter, nicht? Das heisst, ein char besteht eigentlich aus zwei Bytes.

    Nach den Regeln der Sprache besteht dann ein Byte aus 16 Bit, nicht ein char aus zwei Byte. Ein char (oder Byte) ist immer die kleinste adressierbare Einheit.



  • LordJaxom schrieb:

    Stefan schrieb:

    Wenn ein char 16 Bit hat, und ich ein Array von chars habe, dann springt er doch von Element zu Element um 16 Bit weiter, nicht? Das heisst, ein char besteht eigentlich aus zwei Bytes.

    Nach den Regeln der Sprache besteht dann ein Byte aus 16 Bit, nicht ein char aus zwei Byte. Ein char (oder Byte) ist immer die kleinste adressierbare Einheit.

    ...und deshalb muss er auf einem solchen system logische verknüpfungen und shifts benutzen, wenn er 8-bittige datenverarbeitung machen will.
    🙂



  • Apeman schrieb:

    ...und deshalb muss er auf einem solchen system logische verknüpfungen und shifts benutzen, wenn er 8-bittige datenverarbeitung machen will.
    🙂

    Muss man nicht nur darauf achten, dass der Überlauf nicht mehr bei 256 ist? Ich meine, wenn man Werte <256 zuweist, verhalten sich die größeren Bytes doch genauso..?



  • Noch was:

    Wenn ein char 16 Bit ist, und ich ein char in ein File schreibe, hat es dann in dem File zwei Zeichen?

    Und: liefert sizeof die grösse in Bytes oder chars?
    🙂



  • Badestrand schrieb:

    Apeman schrieb:

    ...und deshalb muss er auf einem solchen system logische verknüpfungen und shifts benutzen, wenn er 8-bittige datenverarbeitung machen will.
    🙂

    Muss man nicht nur darauf achten, dass der Überlauf nicht mehr bei 256 ist? Ich meine, wenn man Werte <256 zuweist, verhalten sich die größeren Bytes doch genauso..?

    stefan meinte ja arrays. auf einem system, das 16-bittige chars hat, kann man sich ohne shift und or kein lückenloses array aus 8-bit werten schaffen.
    🙂

    Stefan schrieb:

    Wenn ein char 16 Bit ist, und ich ein char in ein File schreibe, hat es dann in dem File zwei Zeichen?

    nein, es ist ein zeichen, aber das zeichen ist 16 bits breit 😉



  • Apeman schrieb:

    Badestrand schrieb:

    Apeman schrieb:

    ...und deshalb muss er auf einem solchen system logische verknüpfungen und shifts benutzen, wenn er 8-bittige datenverarbeitung machen will.
    🙂

    Muss man nicht nur darauf achten, dass der Überlauf nicht mehr bei 256 ist? Ich meine, wenn man Werte <256 zuweist, verhalten sich die größeren Bytes doch genauso..?

    stefan meinte ja arrays. auf einem system, das 16-bittige chars hat, kann man sich ohne shift und or kein lückenloses array aus 8-bit werten schaffen.
    🙂

    Stefan schrieb:

    Wenn ein char 16 Bit ist, und ich ein char in ein File schreibe, hat es dann in dem File zwei Zeichen?

    nein, es ist ein zeichen, aber das zeichen ist 16 bits breit 😉

    Was ist, wenn ich das File auf einem Computer öffne, wo ein char nur 8 Bit gross ist? Sehe ich dann zwei zeichen?



  • Apeman schrieb:

    stefan meinte ja arrays. auf einem system, das 16-bittige chars hat, kann man sich ohne shift und or kein lückenloses array aus 8-bit werten schaffen.

    Aber kann man sich dann nicht einfach mit einem 16-Bit-Array zufriedengeben, solange sich die Operationen darauf gleich verhalten?



  • Stefan schrieb:

    Was ist, wenn ich das File auf einem Computer öffne, wo ein char nur 8 Bit gross ist? Sehe ich dann zwei zeichen?

    ja, auf diesem system ist das file (jetzt mal in systemabhängigen chars gemessen) doppelt so gross.

    Badestrand schrieb:

    Apeman schrieb:

    stefan meinte ja arrays. auf einem system, das 16-bittige chars hat, kann man sich ohne shift und or kein lückenloses array aus 8-bit werten schaffen.

    Aber kann man sich dann nicht einfach mit einem 16-Bit-Array zufriedengeben, solange sich die Operationen darauf gleich verhalten?

    intern schon, aber für ein und -ausgaben braucht man manchmal echte byte-arrays.
    🙂


Anmelden zum Antworten