erste 4 Byte aus Hexfile in INT konvertieren



  • Nick Unbekannt schrieb:

    Eine Datei muss immer ein festgelegtes Format haben, weil sie weder was von int, noch was von Endianness weiß.

    Ich bin jetzt mal genauso hochnäsig wie du in deinen 2 vorhergehenden Posts: OMG, du hast ja mal gar keine Ahnung!!!!111one

    http://en.wikipedia.org/wiki/Byte_order_mark

    mfg, René~



  • NewSoftzzz schrieb:

    Ich bin jetzt mal genauso hochnäsig wie du in deinen 2 vorhergehenden Posts:

    Wenn man 6 Seiten lang versucht etwas zu vermitteln und das einfach ignoriert wird, kann man schon mal etwas genervt sein.
    Auch gebe ich zu bedenken dass du wegen nicht mal einer Seite gleich so ein rotes Aggressions-Smilie gepostest hast.

    NewSoftzzz schrieb:

    OMG, du hast ja mal gar keine Ahnung!!!!111one

    http://en.wikipedia.org/wiki/Byte_order_mark

    Du hast den Artikel aber schon gelesen. 😃
    Es geht dabei um Texte und die BOM ist eine Kennzeichnung die vorhanden sein kann, aber nicht muss. Sprich du musst auch hier das Dateiformat kennen, um die Informationen richtig interpretieren zu können.
    Es hält dich aber keiner davon ab den Endianness-Test, der hier gepostet wurde, mit in deine Datei aufzunehmen.



  • @NewSoftzzz: Dein Code macht es geschickt, die Umwandlung von big-endian auf "myEndian" passiert implizit beim Speichern der Int-Variable... Nicht schlecht.
    Meine Aussage hinsichtlich dem Cast war falsch, habe sie entfernt. Ich hatte mal bei so einer Geschichte Problem mit dem Casten, aber der zugrundeliegende Datentyp war wohl anders. Seitdem maskiere ich zur Sicherheit lieber aus. Wieder was gelernt.

    @daffi: Nur der Vollständigkeit halber: ja, is_big_endian( ) gibt true zurück, wenn da System big endian ist. Sorry für die fehlende Info.

    Ok, vielleicht kurz zusammengefasst:

    Die Reihenfolge der Bytes in der Datei kann so oder so herum sein, das ist sozusagen das Encoding, und das kann eben big oder little endian sein. Das muss man vorher vereinbaren, damit Lesen und Schreiben funktionieren.

    Beim Lesen in das char[ ]-Array ist die Reihenfolge bekannt, daher kann man die int -Zahl kontrolliert zusammensetzen. Ob der int dann als big oder little-endian im Speicher liegt, spielt dann keine Rolle mehr.

    Liest man dagegen 4 Bytes direkt in den Speicherplatz eines int ein, muss man die Endianess des int ggf. korrigieren.


Anmelden zum Antworten