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
Integer Zahl zum String
Schau mal ins Cookbook ( http://aspn.activestate.com/ASPN/Cookbo ... ipe/219300 ), da hat es diverse Rezepte (glaube, es gibt noch mehr).
Gruß,
Christian
Gruß,
Christian
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
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
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
- 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"?
@birkenfeld: http://en.wikipedia.org/wiki/Denary , heißt also nichts anderes als eine ganze Zahl aus dem Dezimalsystem.
Gruß,
Christian
Gruß,
Christian
- 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.
@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
Allerdings kann ich Deinen Beitrag auch mißverstanden haben, der erste Satz ist mir leider unklar.
Gruß,
Christian
@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.
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.
Ja, hast recht - wahr kein sonderlich schlaues Kommentar von mir.
Gruß,
Christian
Gruß,
Christian