Stringprefixing



  • Hallo Leute
    Wie funktioniert eigentlich das Stringprefixing? Ich meine, wenn ein String in eine Datei geschrieben wird, wird ja vor den eigentlichen String dessen Länge gespeichert! So weit so gut. Doch wenn ich nun einen String speichere, der kleiner als 255 Zeichen lang ist, dann schreibt er nur ein Byte als Prefix. Wenn der String nun mehr als 255 Zeichen enthält, benutzt er 2 Bytes usw. Aber woher weiss das Programm dann beim Laden, ob nun das zweite Byte noch zum Prefix oder bereits zum String gehört??

    P.S.
    Ich habe dieses Verhalten beim BinaryWriter / BinaryReader des .NET FrameWorks beobachtet.

    Bitte nicht verschieben, denn ich glaube kaum, dass jemand vom .Net Forum auf die Frage antworten kann, denn diese scheinen sich nicht sonderlich um technische Hintergründe zu interessieren...



  • diese strings nennen sich pascalstrings und gehoeren nicht zu ansi c.

    so auf anhieb kann man nicht entscheiden, ob es nun 1 oder 2 bytes zur laenge sind. das macht das lesende programm vll an hand dessen, was es erwartet (ob der erwartete string ein 1 oder 2 byte prefixed string ist).
    gib testdaten, dann kann vielleicht jemand aus den eingeweiden lesen.

    [offtopic]lol, die .NET leute sind mehr mit VB verwandt als mit allen anderem.[/offtopic]



  • Neugieriger schrieb:

    Bitte nicht verschieben, denn ich glaube kaum, dass jemand vom .Net Forum auf die Frage antworten kann, denn diese scheinen sich nicht sonderlich um technische Hintergründe zu interessieren...

    Wieso nicht? Wenn Du 'ne Frage zu .NET hast, stell sie da. Mit ANSI-C hat Deine Frage jedenfalls NICHTS zu tun.



  • Normalerweise ist die länge dieses Prefixes fest heutzutage meíst 16 Bit, wenn es weniger als 256 Zeichen ist ist eines der beiden Bytes Null je nach Byteordering. Diese Null wird oftmals übersehen.
    Der Vorteil ist das alle Zeichen im String vorkommen dürfen auch die 0.
    Der Nachteil ist bei vielen kurzen Strings, der Overhead für die Längenangabe.
    Das Verfahren wird auch oftmals in der Kommunikation angewendet um binaer Daten zu übertragen.


Anmelden zum Antworten