Zahlen ins Binärformat umwandeln

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
Bamba
User
Beiträge: 62
Registriert: Dienstag 31. Oktober 2006, 08:48

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
Bamba
BlackJack

Nein, jedenfalls nicht in der Standardbibliothek. Aber hier im Forum und im Netz allgemein solltest Du fündig werden.
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Code: Alles auswählen

import struct;
struct.pack("i", 0x29a);
:wink:
[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
BlackJack

Huch, da ist mir jetzt gar nicht aufgefallen dass die Frage zweideutig war. Ich habe an Zeichenketten mit 0en und 1en gedacht. :-)
Bamba
User
Beiträge: 62
Registriert: Dienstag 31. Oktober 2006, 08:48

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]
Bamba
Benutzeravatar
helduel
User
Beiträge: 300
Registriert: Montag 23. Juli 2007, 14:05
Wohnort: Laupheim

Moin,

ein bisschen Forensuche ergab das hier:

http://www.python-forum.de/topic-4524.html

Gruß,
Manuel
Zap
User
Beiträge: 533
Registriert: Freitag 13. Oktober 2006, 10:56

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: "))
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
Bamba
User
Beiträge: 62
Registriert: Dienstag 31. Oktober 2006, 08:48

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!
Bamba
schlangenbeschwörer
User
Beiträge: 419
Registriert: Sonntag 3. September 2006, 15:11
Wohnort: in den weiten von NRW
Kontaktdaten:

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.
Bamba
User
Beiträge: 62
Registriert: Dienstag 31. Oktober 2006, 08:48

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]
Bamba
Antworten