Hallo Python Freunde, ich hab ein Problem eine Variable so zu definieren das sie nur wie ein 'char' unter C/C++ agiert. Ich möchte ein Programm schreiben das einen Text ließt und jeden Buchstaben alle möglichen Bit-Positionen anzeigt. Soll heißen ich rotiere die Bits. Wenn ich das unter Python mache komme ich irgendwann über 256 und kann das Zeichen nicht mehr mit 'chr()' anzeigen. Das rotieren selbst geschieht natürlich nur 7 mal da es ja nur 8 bits sind die ein zeichen ausmachen. Hier meine Idee zur Umsetzung: for h in range(0,7): for a in fd_in_file: # Zeile einlesen line_len=len(a) for b in range(0,line_len): # zeichen z=a[b:b+1] # einzeln einlesen x=ord(z) # string nach integer y= x << 1 # einmal verschieben print chr(y) # zeichen anzeigen Vielen Dank für die Hilfe.
mk <lopoff@gmx.net> wrote:
ich hab ein Problem eine Variable so zu definieren das sie nur wie ein 'char' unter C/C++ agiert.
Einen char-Typ gibt es unter Python nicht. Entweder definierst Du den über eine eigene Klasse, die entsprechende Operatoren realisiert, oder Du maskierst die höherwertigen Bits bei jeder Operation selbst aus.
for h in range(0,7): for a in fd_in_file: # Zeile einlesen line_len=len(a) for b in range(0,line_len): # zeichen z=a[b:b+1] # einzeln einlesen x=ord(z) # string nach integer y= x << 1 # einmal verschieben print chr(y) # zeichen anzeigen
Etwa so: import sys for h in range(8): for a in open(FILE): # Zeile einlesen for z in a[:-1]: x = ord(z) # string nach integer y = x << h y = (y & 255) | (y >> 8) # einmal rotieren sys.stdout.write(chr(y)) # zeichen anzeigen sys.stdout.write("\n") Kommt natürlich nicht viel Lesbares raus. Detlef
participants (2)
-
Detlef Lannert -
mk