[Python-de] Bits rotieren

Detlef Lannert lannert at uni-duesseldorf.de
Do Jun 21 07:08:02 UTC 2007


mk <lopoff at 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