Announcement

Collapse
No announcement yet.

Big/Little Endian?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Big/Little Endian?

    Hallo!

    Ich Programmiere unter ubuntu in c++, da wird ja Little Endian verwendet!

    Nun hab ich folgende Frage:

    Ich hab mir mittels
    Code:
    struct tm timeinfo;
    und
    Code:
    int64_t time = mktime64(&timeinfo);
    ein int64_t erstellt welches die Uhrzeit im unix-time format beinhaltet.

    nun wenn ich dies in Hex darstellen will
    über:
    Code:
    cout<<hex<<time<<endl
    Code:
    2007-08-04 18:21:22 //Lesbare darstellung
    1186251682 // unix-Time 
    0x46B4C3A2 // unix-Time in Hex - big? Endian
    Dan ist das aber in big endian.

    Als refferenz habe ich http://www.digital-detective.co.uk/freetools/decode.asp verwendet
    Da steht nämlich unter "Unix: 32 bit Hex Value - little Endian" das Value A2C3B446 (also die umgekehrte Byte Reihenfolge die ich in meinem Programm rausbekomme)

    Hab ich da einen Denkfehler oder is das refferenz Programm fehlerhaft?

    Danke Flo

  • #2
    Little/Big-Endian hängt eigentlich von der CPU ab auf der die SW läuft (http://de.wikipedia.org/wiki/Byte-Re...#Little-Endian)

    Comment


    • #3
      Danke! Ich hab im Internet ein bash-Skript gefunden das mir angezeigt hat ob das System Little or Big Endian ist, da war ich dan wohl zu sehr auf das OS fixiert.

      Aber noch mal zu meinem Problem. Wenn ich in einem Little-Endian System, eine dezimal Zahl in Hex umwandle sollte diese doch nachwievor im Little-Endian Format sein?

      Danke
      Flo

      Comment


      • #4
        Es kann dir doch wurscht sein, in welcher Reihenfolge die Bytes im Speicher abgelegt werden, solang du die Reihenfolge nicht benötigst. Und die wird bei einer Stringumwandlung nach Hex nicht benötigt

        Eine Zahl wird immer richtig ausgegeben. 65450 wird als hexadezimal immer FFAA sein (und als dezimale Darstellung eben immer 64450 und nicht 43775). Alles andere wäre falsch. Es wird ja dem Entwicker nicht zugemutet, erst zu prüfen, welche Bytereihenfolge vorliegt und dann bei einer Darstellung die Positionen zu vertauschen. In einer Speicherstelle steht ein Wert. Ob du dir den nun dez, hex, oct darstellen lässt ist egal

        Benötigt wird das beispielsweise dann, wenn man ab einer Speicherstelle die Daten auf Platte schreiben lässt. Sieht man sich dann die Daten an, sollte man wissen, wie sie im Speicher standen
        Zuletzt editiert von Christian Marquardt; 05.05.2013, 11:32.
        Christian

        Comment

        Working...
        X