Wymienia Photoshop file format documentation wymienia ciągi Pascal bez wyjaśnienia, czym one są.Co to jest ciąg w stylu Pascala?
Więc czym one są i jak są kodowane?
Wymienia Photoshop file format documentation wymienia ciągi Pascal bez wyjaśnienia, czym one są.Co to jest ciąg w stylu Pascala?
Więc czym one są i jak są kodowane?
Łańcuch w stylu Pascala ma jeden bajt wiodący (length
), a następnie length
bajtów danych znakowych.
Oznacza to, że ciągi w stylu Pascala mogą kodować tylko ciągi o długości od 0 do 255 znaków (przy założeniu kodowania znaków jednobajtowych, na przykład ASCII).
Na marginesie, innym popularnym ciągiem kodowania jest łańcuchy w stylu C, które nie mają specyfikatora długości, ale używają bajtu zerowego do oznaczenia końca napisu. W związku z tym nie mają limitu długości.
Jeszcze inne kodowania mogą wykorzystywać większą liczbę bajtów prefiksu, aby ułatwić dłuższe łańcuchy. Terminatory bajtów/sentinele mogą być również używane wraz z przedrostkami długości.
Ten opis jest poprawny, ale dotyczy tylko tradycyjnych ciągów Pascal. Modern Object Pascal dialekty, takie jak te w Delphi, Free Pascal i Lazarus obsługują mnóstwo typów łańcuchów z różnymi kodowaniami, a niektóre z nich bez ograniczenia długości. Zobacz http://wiki.freepascal.org/Character_and_string_types w celach informacyjnych. Zakładam jednak, że "ciągi Pascala" w dokumentacji Photoshopa odnoszą się do tradycyjnych ciągów Pascal. – jwdietrich
Rzeczywiście, (raczej długowieczna) specyfikacja Photoshopa używa _Pascal string_ w miejsce bardziej precyzyjnego [_Pascal ShortString_] (http://wiki.freepascal.org/Character_and_string_types#ShortString). Dzięki za referencję. –
Tylko Delphi zmieniło nazwę na "string" na shortstring, ponieważ wprowadziło ansistring. Pochodzenie łańcucha afaik to UCSD Pascal, patrz http://stackoverflow.com/questions/25068903/what-are-pascal-strings/25079998#25079998 –