Integer Zahl zum String

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
erka
User
Beiträge: 17
Registriert: Montag 24. April 2006, 16:01

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 :?:
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Schau mal ins Cookbook ( http://aspn.activestate.com/ASPN/Cookbo ... ipe/219300 ), da hat es diverse Rezepte (glaube, es gibt noch mehr).

Gruß,
Christian
pr0stAta
User
Beiträge: 271
Registriert: Freitag 17. September 2004, 11:49
Wohnort: Bremen

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
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

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
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Außerdem: WTF ist ein "denary integer"?
erka
User
Beiträge: 17
Registriert: Montag 24. April 2006, 16:01

Danke CM und Pr0stAta!!!
Man war das schnell!!
:D
erka
rayo
User
Beiträge: 773
Registriert: Mittwoch 5. November 2003, 18:06
Wohnort: Schweiz
Kontaktdaten:

Hi

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

Gruss
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

@birkenfeld: http://en.wikipedia.org/wiki/Denary , heißt also nichts anderes als eine ganze Zahl aus dem Dezimalsystem.

Gruß,
Christian
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

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.
pr0stAta
User
Beiträge: 271
Registriert: Freitag 17. September 2004, 11:49
Wohnort: Bremen

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
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

@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
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.
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Ja, hast recht - wahr kein sonderlich schlaues Kommentar von mir.

Gruß,
Christian
Antworten