[Python-de] mit Bytes rechnen

Diez B. Roggisch deets at web.de
Mi Mai 13 11:21:54 CEST 2015


Hallo Stefan,

ohne konkrete Rechenbeispiele kann ich das nicht validieren ob’s da ggf. Probleme mit Vorzeichen gibt - aber fuer sowas reicht der Modulooperator eigentlich aus:

>>> s = "hallo stefan"
>>> s + chr(sum(ord(c) for c in s) % 0xff)
'hallo stefan\xb5’

Diez

> On 13 May 2015, at 10:52, Stefan <df9bi at arcor.de> wrote:
> 
> Hallo,
> 
> ein Kollege von mir versucht ein paar Delphi Codeschnipsel in Python umzusetzen. Da ich selber keine Ahnung von Python habe, suche ich hier nach Tipps, die ich weitergeben kann.
> 
> Der Kollege sagte mir, das es in Python den Datentyp byte nicht gibt, wohl aber Bytearray.
> 
> Es geht um eine Checksummenberechnung (Nullsumme).
> 
> In Delphi / Pascal sieht das folgendermaßen aus:
> 
> procedure sendestring(s:string);
> // hänge an Sting s eine Checksumme an und sende das raus
> var c : byte;
>    i : integer;
> begin
> // s := 'Hello World'; // Beispieltext
> c := 0;	// Anfangswert der Checksumme
> for i := 1 to length(s) do c := c - ord(s[i]);
> // die Ascii-codes nacheinander subtrahieren
> s := s + char(c); // und dann an den String anhängen
> sende(s); // String + Checksumme senden
> end;
> 
> Die Checksumme kann dann folgendermaßen geprüft werden:
> 
> function checkechecksumm(s:string):boolean;
> var c : byte;
>    i : integer;
> begin
> c := 0;	// Anfangswert auf 0
> for i := 1 to length(s) do c := c + s[i]; // alle Bytes addieren
> result := (c = 0); // wenn Summe = 0, dann ok
> end;
> 
> So wie ich das verstanden habe, kann ich in Python nicht mit Bytes rechnen, zumindest nicht mit einzelnen Bytes. Könnte ich aber dasselbe erreichen, wenn ich ein einzelnes Element aus einem Bytearray verwende?
> 
> also ungefähr so:
> 
> c = bytes([0])	# array mit nur einem Element
> c[0] = 0
> 
> for x in range (0,4)
> 	c[0] = c[0] - s[x]
> 
> Gruß
> 
> Stefan
> 
> 
> 
> 
> 
> 
> 
> 
> 
> _______________________________________________
> python-de maillist  -  python-de at python.org
> https://mail.python.org/mailman/listinfo/python-de
> 



Mehr Informationen über die Mailingliste python-de