Calocybe: Aktueller Stand der Dinge

Beitrag lesen


Screen Descriptor Screen Width      2 Bytes  Breite des Gesamtbildes ($HHLL)
                  Screen Height     2 Bytes  Höhe des Gesamtbildes ($HHLL)

ist das wirklich ($HHLL)? mir war so als ob ich was von Intelnotation gelesen hätte
und die wäre dann doch ($LLHH).


VORSICHT! Die Notation, wie Cheatah sie benutzt, ist die Pascal-Schreibweise fuer Hex-Zahlen (in C ist es 0xHHLL). HH bedeuten dabei die beiden hoeherwertigen Ziffern (High-Byte), LL die niederwertigen (Low-Byte); na das weisst Du sicher. Es ist richtig, das HH vorn hinzuschreiben, denn "hoeherwertig" bedeutet ja, das es groessere Bedeutung fuer den Gesamtwert der Zahl hat. Und jetzt sag mir mal, welche Ziffer fuer den Gesamtwert der dezimalen Zahl 42 die groessere Bedeutung hat? Die 4! Deshalb steht sie vorn, auf dem Papier jedenfalls, auch auf dem elektronischen Papier. Und das ist immer so, egal ob Intel- oder sonstwas -Notation.

Jetzt zur Intel-Notation (auch Little Endian Format ganannt). Nehmen wir die Zahl $1234, also $12 * 256 + $34 = 18 * 256 + 52 = 4660. Es gilt HH=$12 und LL=$34. Das Intelformat schreibt nun vor, das niederwertigste Byte an die niederwertigste Speicherstelle zu schreiben (also die Speicherstelle mit der kleinsten Adresse), und das hoechstwertigste Byte an die hoechste Addresse. Adresse ist in diesem Zusammenhang einfach der Offset innerhalb der GIF-Datei.
Die Zahl $1234 soll nun an der Adresse 0100 stehen (hex oder dec ist erstmal egal). Da die Zahl 2 Bytes gross ist, erstreckt sie sich von 0100 bis 0101. Dabei steht die $34 an 0100 und die $12 an der 0101. Ist doch klar, oder? Naja, wenn man sich sozusagen den Speichern von "unten" nach "oben", durchliest, dann kommt eben die $34 zuerst. Aber genauso gut kann man ihn ja von "oben" nach unten" durchlesen. Auf dem Papier liest man von "vorn" nach "hinten, und ob jetzt "unten" <=> "vorn" und "oben" <=> "hinten" oder umgekehrt, ist mal wieder reine Definitionssache.

In der GIF-Spec sind die Bilder fuergewoehnlich in dieser Art gemalt:
Offset    Value
0100       $34
0101       $12

Naja, irgendwie bedeutet "vorn" doch mehr "unten" als "oben", denn die GIF-Datei von "vorn" nach "hinten" gelesen liegt von "unten" nach "oben" im Speicher. Und weil das Format von "vorn" nach "hinten" beschrieben ist, werden die Bilder so gemalt, dass erst die "unteren", dann die "oberen" Adressen kommen. Und deshalb sind die "oberen" Adressen auf dem Papier unten! (Siehe das Bild: die 0100 ist UEBER der 0101, aber im Speicher ist sie drunter.)

Ach ja, und wenn ein Byte in seine Bits zerlegt wird sieht das meist so aus:
7 6 5 4 3 2 1 0
Dabei ist 7 das hoechstwertigste Bit (MSB = most significant bit) und 0 das niederste (LSB = least significant bit). von der Zahl $34 ist die 3 in den Bits 7-4 codiert, die 4 in den Bits 3-0. Diesmal stimmt glaube ich alles mit "vorn" und "hinten".

Hab ich Euch jetzt total verwirrt? Naja, hoffentlich hat's keiner gelesen, der Thread ist ja schon uralt (einen halben Tag)!  ;-)

Calocybe

0 50

GIF-Dateiformat (1)

Klaus Junge
  1. 0

    GIF-Dateiformat (2)

    Klaus Junge
    1. 0
      Cheatah
      1. 0
        m0b
        1. 0
          m0b
          1. 0
            Cheatah
          2. 0
            Stefan Muenz
            1. 0
              Cheatah
    2. 0
      Cheatah
      1. 0
        Klaus Junge
        1. 0
          Klaus Junge
          1. 0
            Cheatah
            1. 0
              Klaus Junge
              1. 0
                Cheatah
    3. 0

      GIF-Dateiformat (2a)

      Klaus Junge
      1. 0
        Cheatah
        1. 0
          Klaus Junge
          1. 0
            Cheatah
            1. 0
              Klaus Junge
              1. 0
                Cheatah
              2. 0
                Calocybe
                1. 0
                  Cheatah
                  1. 0
                    Calocybe
                    1. 0
                      Cheatah
                      1. 0
                        Calocybe
        2. 0
          Jörk Behrends
  2. 0
    Olaf Grönemann
  3. 0

    GIF-Dateiformat (k1)

    Klaus Junge
    1. 0

      GIF-Dateiformat (k2)

      Klaus Junge
      1. 0
        Cheatah
        1. 0
          Klaus Junge
          1. 0
            Cheatah
      2. 0

        GIF-Dateiformat (k3)

        Klaus Junge
        1. 0
          Cheatah
        2. 0

          GIF-Dateiformat (k4)

          Klaus Junge
  4. 0

    GIF-Dateiformat (3=Palette)

    Klaus Junge
    1. 0
      Cheatah
      1. 0
        Klaus Junge
        1. 0
          Cheatah
  5. 0

    Aktueller Stand der Dinge

    Cheatah
    1. 0
      Klaus Junge
      1. 0
        Cheatah
      2. 0
        Calocybe
        1. 0
          Cheatah
  6. 0

    GIF-Dateiformat (test_1)

    Klaus Junge
    1. 0
      Cheatah
      1. 0
        Klaus Junge
        1. 0
          Klaus Junge
          1. 0
            Calocybe
          2. 0
            Cheatah