Seite 1 von 1

Zeichen als ASCII code einlesen

Verfasst: Montag 20. November 2006, 21:32
von ede
dürfte eigentlich keine grosse sache sein, aber mit typecasting funtzt's offenbar nicht so ohne weiteres (valueerror...base 10:): ich will zeichen für zeichen (file.read(1)) einlesen und dann mit dem ASCII code des Zeichens hantieren (ASCII code v.a. wegen den Zeichen mit den werten 10 und -1). also meine eigentliche frage: wie bekomm ich den ASCII code anstatt der Zeichen ( :oops: bin blutiger anfänger in python :D ) und ist die methode read(1) hier überhaupt das wonach ich suche?

Verfasst: Montag 20. November 2006, 21:49
von Joghurt
Suchst du ord?

Code: Alles auswählen

>>> bla='X'
>>> ord(bla)
88

Verfasst: Dienstag 21. November 2006, 10:37
von jens
Also ich würde nicht wirklich read(1) machen, also Zeichen für Zeichen aus der Datei lesen... Effektiver dürfte es sein, eine ganze Zeile mit readline() zu lesen und dann über die einzelnen Seiten per for-Schreife zu interieren...

Re: Zeichen als ASCII code einlesen

Verfasst: Dienstag 21. November 2006, 11:24
von BlackJack
ede hat geschrieben:(ASCII code v.a. wegen den Zeichen mit den werten 10 und -1).
-1 gibt's nicht als ASCII Wert. Als Byte im Zweierkomlement wäre das ohne Vorzeichen die 255, was streng genommen auch nicht in ASCII liegt.

Was willst Du denn mit den Bytewerten machen?

Verfasst: Dienstag 21. November 2006, 16:29
von sape
Klingt mir so als ob er da was "Crypten" will ^^

Verfasst: Dienstag 21. November 2006, 20:03
von ede
naja nicht ganz, aber nicht schlecht geraten :wink:

jedenfalls reicht ord() schon aus, danke!
BlackJack hat geschrieben:-1 gibt's nicht als ASCII Wert
also bei wenn man in C ein file Zeichen für Zeichen ausliest, dann ist das letzte, sofern als abbruchbedingung eingeben, die Dateiendkennung, also EOF, wobei das ein Konstante für -1 ist.

Verfasst: Dienstag 21. November 2006, 20:12
von ede
also bei ord(EOF) kommt immer "TypeError: ord() expected a character, but string of length 0 found". gibts ne funktion, die dann -1 ausspuckt, wenn nein, wie kann ich die dann coden? oder sollte ich bei der funktion direkt auf C umsteigen?

Verfasst: Dienstag 21. November 2006, 21:31
von Joghurt
Mach doch am besten einen Post auf, wo du dein eigentliches Problem schilderst. Sprich: erzähle uns, was du machen willst, nicht ein spezielles Problem des wie.

Unter Python programmiert man anders als in C. Wenn du 1:1 C-Code nachprogrammierst, ist das kontraproduktiv.

Ein EOF erkennst du daran, dass read einen leeren String zurückgibt...

Code: Alles auswählen

datei = open(...)
buffer = datei.read(4096)
while len(buffer) > 0:
  mach_irgendwas(buffer)
  buffer = datei.read(4096)

# Oder wenn du Zeilenweise was machen willst:
for zeile in datei:
  mach_was_mit(zeile)