![]() |
Umwandlung Big Endian nach Little Endian
Hallo alle zusammen!
Ich stehe vor dem Problem, das ich eine Datei habe, in der Zahlenwerte binär im Big Endian Format abgelegt sind. Beim Einlesen dieser Daten per TFileStream.ReadBuffer erhalte ich in meiner Buffervariable natürlich eine falsche Zahl. Gibt es eine schnelle Variante (evtl. neue TStream-Komponente) die die Konvertierung für mich erledigt? (so das ich in meiner Buffervariable den richtigen Wert habe) MfG -jryan |
Re: Umwandlung Big Endian nach Little Endian
Ein Hallöle von
![]() Schau mal in der OH nach: LoadFromStream (Methode von IXMLDocument) TXMLEncodingType (Typ) http://www.delphipraxis.net/images/common/divider.jpg ![]() ![]() ![]() |
Re: Umwandlung Big Endian nach Little Endian
Hallo himitsu!
Danke für den Hilfeversuch, aber leider hat dieses Problem nichts mit XML zu tun sondern ist eine völlig andere Baustelle. Es geht mir dabei wirklich darum eine reine Binärdatei in Delphi einzulesen und zu bearbeiten. Diese Binärdatei ist, dabei aber wie gesagt BigEndian codiert. -jryan |
Re: Umwandlung Big Endian nach Little Endian
Hallo,
rechne die Dinger doch um. Hab das Ganze mit little Endian gemacht. Überhaupt kein Problem. Nur High und low Byte vertauschen. Rainer |
Re: Umwandlung Big Endian nach Little Endian
Ich hatte mir nur gedacht, dass du dir dieses XML-Zeug für deine Zwecke mißbrauchen könntest.
Wenn nicht, bleibt dir nichts anderes als es selber umzuwandeln, wie Rainer schon sagte. Den Aufbau kannst du in etwa aus den Typennamen in "TXMLEncodingType (Typ)" entnehmen. http://www.delphipraxis.net/images/common/divider.jpg ![]() ![]() ![]() |
Re: Umwandlung Big Endian nach Little Endian
Tja dann muss ich mir wohl doch selber was ausdenken! Ich hatte bloss gedacht, das es evtl. schon irgendwas vordefiniertes gibt und warum sollte man das Rad jedesmal neu erfinden!
-jryan |
Re: Umwandlung Big Endian nach Little Endian
Hallo jryan,
mit einer "schnelle Variante" meinst Du sicher eine, die wenig Änderungen an Deinem Programm erforderlich macht, oder? Du könntest einen "Dekorierer" ( ![]() Mit dieser Lösung kannst Du einfach ein Exemplar dieser Klasse überall dort verwenden, wo Du bisher mit mit Stream gearbeitet hast, ohne Dein Programm weiter anpassen zu müssen (ggf musst Du Dir Gedanken über die Freigabe des aggregierten Objekts Gedanken machen. Vielleicht hilft ein Blick auf TObjectList in der OH). |
Re: Umwandlung Big Endian nach Little Endian
Wie wäre es einfach mit einer Funktion die das High- und Low-Word vertauscht? :roll: Gibt es ad nicht sogar einen ASM Befehl?
|
Re: Umwandlung Big Endian nach Little Endian
Hi, falls Du eine Delphi3000 Mitgliedschaft hast, dann findest Du hier Deine Lösung:
![]() ...:cat:... |
Re: Umwandlung Big Endian nach Little Endian
Hallo,
das ist so einfach, darüber lohnt es sich doch noch nicht einmal Ansatzweise Gedanken zu machen. Mit 2 Zeilen Code ist das erledigt. Wieviel Zeit brauchst du für das neue Konstrukt? Wie oft brauchtst du Big Endian? Rainer |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:17 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz