Seite 1 von 1

Integer Zahl zum String

Verfasst: Mittwoch 18. Oktober 2006, 11:54
von erka
Hallo,
wie könnte ich am einfachsten eine Int Zahl in einen Bit String umwandeln.
z.B:
11 -> '1011'
oder
7 -> '0111'
Gibt es eine fertige Funktion dafür?
Danke :?:

Verfasst: Mittwoch 18. Oktober 2006, 12:04
von CM
Schau mal ins Cookbook ( http://aspn.activestate.com/ASPN/Cookbo ... ipe/219300 ), da hat es diverse Rezepte (glaube, es gibt noch mehr).

Gruß,
Christian

Verfasst: Mittwoch 18. Oktober 2006, 12:06
von pr0stAta

Code: Alles auswählen

def Denary2Binary(n):
    '''convert denary integer n to binary string bStr'''
    bStr = ''
    if n < 0:  raise ValueError, "must be a positive integer"
    if n == 0: return '0'
    while n > 0:
        bStr = str(n % 2) + bStr
        n = n >> 1
    return bStr

Denary2Binary(11)
#output: 1011

Verfasst: Mittwoch 18. Oktober 2006, 12:14
von CM
Also, pr0stAta, wenn Du da nicht mit einem anderen Nick auftritts, hast Du es von:
http://www.daniweb.com/code/snippet285.html
http://lists.puredata.info/pipermail/pd ... 39545.html
oder sonst wo her. Die Quelle könntest Du ruhig angeben ;-).

Gruß,
Christian

Verfasst: Mittwoch 18. Oktober 2006, 12:24
von birkenfeld
Außerdem: WTF ist ein "denary integer"?

Verfasst: Mittwoch 18. Oktober 2006, 12:41
von erka
Danke CM und Pr0stAta!!!
Man war das schnell!!
:D
erka

Verfasst: Mittwoch 18. Oktober 2006, 12:41
von rayo
Hi

Sonst hier auch noch was: http://www.python-forum.de/post-45422.html#45422

Gruss

Verfasst: Mittwoch 18. Oktober 2006, 12:54
von CM
@birkenfeld: http://en.wikipedia.org/wiki/Denary , heißt also nichts anderes als eine ganze Zahl aus dem Dezimalsystem.

Gruß,
Christian

Verfasst: Mittwoch 18. Oktober 2006, 13:07
von birkenfeld
Das ist mir klar, nur ist eine ganze (oder natürliche) Zahl in gar keinem System, nur ihre Darstellungen. Insofern ist es ein Käse, einen Integer als "denary" zu bezeichnen. Ebensogut könnte ich ihn "binary" oder "hexadecimal" nennen.

Verfasst: Mittwoch 18. Oktober 2006, 14:22
von pr0stAta
Huhu,
Christian hat natürlich Recht,
habs von der Seite und hätte die Quelle angeben
müssen. Habs im Eifer des Gefechts vergessen.
Gruss

Verfasst: Mittwoch 18. Oktober 2006, 14:26
von CM
@birkenfeld: Das ist nicht korrekt. 10 ist eine ganze Zahl. Aber ihr Wert hängt davon ab, ob man 10 zur Basis 2, 8, oder 10 (dezimal) liest. Also ist es, wenn man von einer Basis zur anderer konvertieren möchte nicht unbedingt redundant oder willkürlich genau anzugeben, um welche Basis es sich handelt.
Allerdings kann ich Deinen Beitrag auch mißverstanden haben, der erste Satz ist mir leider unklar.

Gruß,
Christian

Verfasst: Mittwoch 18. Oktober 2006, 14:56
von BlackJack
@CM: Nein 10 ist keine Zahl sondern die Repräsentation einer Zahl. Wenn man da nichts weiter angibt, dann ist es natürlich nicht eindeutig welche Zahl damit gemeint ist.

Was an der Namensgebung der Funktion falsch ist, ist das sie ganze Zahlen umwandelt und nicht nur solche die irgendwie, irgendwann mal Dezimal dargestellt wurden. Ob Du die Funktion jetzt mit 255, 0xFF oder 0377 aufrufst, es führt immer zum gleichen Ergebnis und nur in einem der 3 Fälle wäre der Funktionsname passend. Mit 'binary' meinte Birkenfeld sicher das das wahrscheinlich am ehesten die Repräsentation ist mit der die meisten Rechner intern operieren.

Verfasst: Mittwoch 18. Oktober 2006, 18:15
von CM
Ja, hast recht - wahr kein sonderlich schlaues Kommentar von mir.

Gruß,
Christian