Seite 1 von 1
Zahlen ins Binärformat umwandeln
Verfasst: Dienstag 11. September 2007, 07:13
von Bamba
Hallo,
ich suche nach einer Möglichkeit in Python Zahlen ins Binärformat umzuwandeln. Gibt es dafür eine bereits fertige Funktion?
Vielen dank!
KageMurai
Verfasst: Dienstag 11. September 2007, 07:28
von BlackJack
Nein, jedenfalls nicht in der Standardbibliothek. Aber hier im Forum und im Netz allgemein solltest Du fündig werden.
Verfasst: Dienstag 11. September 2007, 09:01
von veers
Verfasst: Dienstag 11. September 2007, 09:13
von BlackJack
Huch, da ist mir jetzt gar nicht aufgefallen dass die Frage zweideutig war. Ich habe an Zeichenketten mit 0en und 1en gedacht.

Verfasst: Mittwoch 12. September 2007, 06:49
von Bamba
Hmm. Danke. Ich habe das jetzt so gelöst:
Code: Alles auswählen
while (erg!=0):
if erg%2==0:
erg=erg/2
array.append(0)
if erg%2==1:
erg=erg/2
array.append(1)
array.reverse()
print "Binaeres Ergebnis: "
print array
Bamba[/code]
Verfasst: Mittwoch 12. September 2007, 07:57
von helduel
Moin,
ein bisschen Forensuche ergab das hier:
http://www.python-forum.de/topic-4524.html
Gruß,
Manuel
Verfasst: Mittwoch 12. September 2007, 08:19
von Zap
Hab mir auch vor einiger Zeit mal übers Forum hier ne Lösung zusammengesucht:
Code: Alles auswählen
import math
def int_to_bin(value):
"""
convert the given int value into a binary-string
example: 13 -> '1101'
"""
bits = int((math.log(value)/math.log(2))+1)
return "".join(["01"[value>>x & 1] for x in xrange(bits-1,-1,-1)])
if __name__ == "__main__":
print int_to_bin(input("int value: "))
Verfasst: Mittwoch 12. September 2007, 08:29
von BlackJack
Die Funktion mag keine 0:
Code: Alles auswählen
In [24]: int_to_bin(0)
---------------------------------------------------------------------------
<type 'exceptions.OverflowError'> Traceback (most recent call last)
/home/bj/<ipython console> in <module>()
/home/bj/<ipython console> in int_to_bin(value)
<type 'exceptions.OverflowError'>: math range error
Verfasst: Mittwoch 12. September 2007, 19:04
von Bamba
Hmm,
ich benutzte jetzt einfach mal meinen Code weiter, da er ja auch funktioniert. Trotzdem danke!
Ich habe dazu aber noch eine Frage:
Code: Alles auswählen
def binaer(char):
array=[]
ord(char)
while (char!=0):
if char%2==0:
char=erg/2
array.append(0)
if char%2==1:
char=erg/2
array.append(1)
array.reverse()
print "Binaeres Ergebnis: "
print array
get_char()
Habe diesen Code, der ganz einfach nur einen buchstaben in binär umwandeln soll. Über get_char() lese ich einen buchstaben mit raw_input ein (also ganz einfach).
Wieso erhalte ich dann aber diese Fehlermeldung:
Traceback (most recent call last):
File "C:\Dokumente und Einstellungen\Sebastian\Desktop\Python\x.py", line 21, in <module>
get_char()
File "C:\Dokumente und Einstellungen\Sebastian\Desktop\Python\x.py", line 3, in get_char
binaer(char)
File "C:\Dokumente und Einstellungen\Sebastian\Desktop\Python\x.py", line 9, in binaer
if char%2==0:
TypeError: not all arguments converted during string formatting
Danke!
Verfasst: Mittwoch 12. September 2007, 19:15
von schlangenbeschwörer
Nunja, also "char" ist ein String und bleibt es auch, da gibts halt kein Modulo. "erg" wird auch nicht definiert. Dein Code funktioniert also doppelt nicht.
Verfasst: Mittwoch 12. September 2007, 19:18
von Bamba
Hallo,
tut mir wirklich leid, aber das war mein Fehler. Ich habe 1. das falsche gepostet und 2. einen dummen Fehler gemacht. Jetzt funktioniert alles:
Code: Alles auswählen
def binaer(char):
array=[]
char=ord(char)
while (char!=0):
if char%2==0:
char=char/2
array.append(0)
if char%2==1:
char=char/2
array.append(1)
array.reverse()
print "Binaeres Ergebnis: "
print array
get_char()
Danke![/code]