Hallo!
Ich muss zugeben, dass ich noch nicht so gut in Python programmieren kann, deshalb jetzt auch diese Anfängerfrage:
Was genau habe ich in python unter einem String zu verstehen? Ist ein string nur ein haufen Schreibbare zeichen also sowas: "Hello World!" oder auch eine Folge von Bytes also: "0x41,0x42,0x43,0x44,0x00,0x44"?
Was ist der Unterschied zwischen einem Sting und dem, was von bytearray() zurückgegeben wird? Gibt so eine Funktion: http://python-pefile.sourcearchive.com/ ... 8e0b3.html nun einen String oder ein Bytearray zurück?
Ich habe bis jetzt nur ein bischen C Programmiert und da ist ein String ja einfach nur ein Array aus Bytes, ich glaube desshalb habe ich grade ein kleines Probelm mit den Python Stings...
Das wäre nett wenn mich da jemand kurz aufklähren könnte.
mfg Monty90
Wie ist das mit den Strings?
Hallo.
Dann hängt von der Pythonversion ab. In allen 2.x-er Versionen kannst du String und Bytes synonym verwenden und in etwas so verstehen wie Strings unter C. Ab 3.x wird zwischen Strings und rohen Bytes unterschieden. Bevor ich versuche das alles zu erklären, verlinke eich einfach mal auf den entsprechenden Abschnitt in der Dokumentation. Das sollte hoffentlich die Unklarheiten beseitigen.
Sebastian
Dann hängt von der Pythonversion ab. In allen 2.x-er Versionen kannst du String und Bytes synonym verwenden und in etwas so verstehen wie Strings unter C. Ab 3.x wird zwischen Strings und rohen Bytes unterschieden. Bevor ich versuche das alles zu erklären, verlinke eich einfach mal auf den entsprechenden Abschnitt in der Dokumentation. Das sollte hoffentlich die Unklarheiten beseitigen.
Sebastian
Das Leben ist wie ein Tennisball.
Danke für deine Antwort!
Aber irgendwie scheint ein Byte doch noch etwas anderes zu sein als ein Buchstabe im String:
wenn ich aber das Bytearray von "Hello World!" mit print ausgeben würde dann würde das gannze wieder wie ein String behandelt... Ist das bei allen funktionen so?
Aber irgendwie scheint ein Byte doch noch etwas anderes zu sein als ein Buchstabe im String:
Code: Alles auswählen
>>> for i in a:
... i = i*2
... print i
...
HH
ee
ll
ll
oo
WW
oo
rr
ll
dd
!!>>> for i in bytearray(a):
... i = i*2
... print i
...
144
202
216
216
222
64
174
222
228
216
200
66
-
BlackJack
@Monty90: Natürlich ist der Python-Typ `bytearray` etwas anders als der Python-Typ `str`. Sonst wäre es ja sinnlos beide zu haben.
Wie sich die jeweiligen Typen in Funktion verhalten hängt davon ab was die Funktionen damit anstellen wollen.
Wenn Du etwas mit ``print`` ausgibst, wird das Objekt gefragt wie es als `str` aussieht. Das entscheidet jedes Objekt beziehungsweise jeder Datentyp für sich. `bytearray`-Exemplare geben auf diese Anfrage eine Zeichenkette mit den Bytewerten als "Zeichen" zurück.
Wie sich die jeweiligen Typen in Funktion verhalten hängt davon ab was die Funktionen damit anstellen wollen.
Wenn Du etwas mit ``print`` ausgibst, wird das Objekt gefragt wie es als `str` aussieht. Das entscheidet jedes Objekt beziehungsweise jeder Datentyp für sich. `bytearray`-Exemplare geben auf diese Anfrage eine Zeichenkette mit den Bytewerten als "Zeichen" zurück.
-
deets
strings in Python sind immutable - so wie zB in Java. Du kannst also keine Zeichen in ihen Veraendern. Mit Bytearrays hingegen geht das. Aber ein Rat fuer den Anfang: vergiss einfach, dass es bytearrays gibt. Ich kann mich nicht erinnern, wann ich sie mal gebraucht haette in den letzten Jahren - ganz sicher jedenfalls fuer nichts, das ich mit String-manipulation versucht habe.
