PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Umwandlung Little Endian - Big Endian?



jay-t
20-03-2011, 13:35
Ich habe hier ein etwas schwieriges Problem:
Ich entwickle gerade eine Datenbank.
Beim schreiben der Funktion fürs Speichern habe ich ein Problem.
Alle Integerzahlen sollen im Big Endian Format geschrieben werden.
Die Umwandlung erfolgt mit net.c/htonud().

Das ganze wird über file.c/dump_hive() gestartet, die wiederum die Funktion file.c/dump_uint aufruft.
Dort wird dann die Little Endian zahl VERSION (1) nach Big Endian umgewandelt und anschließend gespeichert
im Verzeichnis "Test".

Wenn ich allerdings die Dateien im Hexeditor öffne, dann steht dort nur der Headertext gefolgt von Nullen drin.
Wo ist die 1 in der Big Endian Schreibweise abgeblieben?

Was ist hier nicht richtig?
Ich hoffe jemand kann mir einen Tipp geben.

Ich habe ein Archiv angehängt mit den Sourcen.

jay-t
10-04-2011, 18:44
Ich verwende jetzt htobe64() statt meiner eigenen Funktion.
Weiß jemand wo es für htobe64() die Sourcen gibt, da ich das auch für Windows verwenden möchte.

jeebee
10-04-2011, 22:13
Glibc:
http://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/x86_64/bits/byteswap.h

edit: Achtung: wenn du den Code so direkt in dein Projekt übernimmst gilt afaik die GPL!

BlauerBlitz
18-04-2011, 15:08
Hallo!


Achtung: wenn du den Code so direkt in dein Projekt übernimmst gilt afaik die GPL!

Ich nehme an, dass das so nicht ganz richtig ist. In dem Header-File steht, dass es der LGPL unterliegt. Dazu sagt die Wikipedia http://de.wikipedia.org/wiki/GNU_Lesser_General_Public_License:

Veränderte Versionen müssen dabei ebenfalls unter der LGPL (oder wahlweise der GPL) lizenziert werden. Grundsätzlich darf eine unter LGPL lizenzierte Software nur zusammen mit ihrem Quelltext vertrieben werden.

Im Gegensatz zur GPL dürfen alle Programme, welche die LGPL-lizenzierte Software nur extern benutzen, zum Beispiel als Programmbibliothek, ihre eigene Lizenz behalten. Damit eignet sich die LGPL besonders als Lizenz für Bibliotheken, deren Benutzung man auch Programmierern proprietärer Programme erlauben will.

Das heißt, die LGPL beeinflusst nicht (im Gegensatz zur GPL) die Lizenz des Anwendungsprogramms.
Natürlich sollte man das noch im englischen Original nachlesen; es müsste aber soweit passen ...

Werner

jeebee
18-04-2011, 21:41
... welche die LGPL-lizenzierte Software nur extern benutzen ...
extern heisst, dass beliebig lizenzierte Programme gegen die glibc linken dürfen, nicht dass beliebig lizenzierte Programme Stücke des Codes kopieren dürfen.

edit: Das heisst, wenn du den glibc-Code in dein Projekt kopierst, müsstest du eigentlich dein Projekt unter der LGPL lizenzieren.

BlauerBlitz
19-04-2011, 09:17
extern heisst, dass beliebig lizenzierte Programme gegen die glibc linken dürfen, nicht dass beliebig lizenzierte Programme Stücke des Codes kopieren dürfen.

edit: Das heisst, wenn du den glibc-Code in dein Projekt kopierst, müsstest du eigentlich dein Projekt unter der LGPL lizenzieren.

Jeebee, da hast Du schon recht, aber Include-Files prinzipiell sind für das korrekte Einbinden von Libraries (schon wegen der diversen Funktionsprototypen) notwendig. Ich kann mir nicht vorstellen, dass das Einbinden des Includes-Files "byteswap.h" (als Teil der Nutzung der Library!) hier anders zu sehen ist. Aber ich bin natürlich kein Anwalt ... :)

Kopieren des Codes ist natürlich eine ganz andere Sache! :eek:

Werner

jeebee
19-04-2011, 16:16
Das Einbinden nicht, aber wenn du das File byteswap.h (das ja auf Windows nicht vorhanden sein wird...) zusammen mit deinem Projekt weiterverbreitest (so habe ich jedenfalls Post #2 (http://www.mrunix.de/forums/showpost.php?p=329556&postcount=2) verstanden), dann hast du es prinzipiell kopiert und musst dich an die Lizenzbedingungen des Files halten.