Byte-Count-Format
-
Hallo,
Einige Programmiersprachen speichern ihre Zeichenketten im Byte-Count-Format. Dabei enthält das erste Byte (Zeichen) die Länge der Zeichenkette und es folgen die eigentlichen Zeichen. C-Zeichenketten speichern Zeichen in einem Feld vom Typ char, das mit Null-Byte abgeschlossen ist. Kann mir einer sagen wie eine Funktion aussehen könnte die eine Zeichenkette im Byte-Count-Format, die ihr als Argument übergeben wird, in eine äquivalente C-Zeichenkette umwandelt? Allerdings darf dabei keine Kopie der als Argument übergebenen Zeichenkette gemacht werden.
-
Was ist das für eine Anforderung?
Aber so könnte es gehen:
1. Die Bytes des Strings um eine Position nach vorne verschieben.
2. Auf die letzte freie Position wird eine 0 geschrieben.Die Anzahl der zu verschiebenden Bytes ist die Länge des Strings.
-
Wernus schrieb:
Kann mir einer sagen wie eine Funktion aussehen könnte die eine Zeichenkette im Byte-Count-Format, die ihr als Argument übergeben wird, in eine äquivalente C-Zeichenkette umwandelt?
ja.
zum beispiel so:
void pascalStringToCString(unsigned char* str){ //länge merken tun unsigned char count=str[0]; //daten um einen platz vormoschen for(int i=0;i<count;++i) str[i]=str[i+1]; //hinten eine null dranmoschen str[count]='\0'; }Allerdings darf dabei keine Kopie der als Argument übergebenen Zeichenkette gemacht werden.
klar. wir sind ja nicht verschwenderisch.