Binär form einer Python variable?

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
thomaz
User
Beiträge: 16
Registriert: Donnerstag 13. August 2009, 14:31

hi leute,
weiß jemand wie ich an die Binär form einer Python variable rankomme?
also die vorm der werte die die hashlib verwendet um z.b. nen md5 zu berechnen?
mfg thomaz
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

thomaz hat geschrieben:hi leute,
weiß jemand wie ich an die Binär form einer Python variable rankomme?
also die vorm der werte die die hashlib verwendet um z.b. nen md5 zu berechnen?
mfg thomaz
Ab Python 2.6: bin()
thomaz
User
Beiträge: 16
Registriert: Donnerstag 13. August 2009, 14:31

da kommt bei mir immer nur:
TypeError: 'str' object cannot be interpreted as an index
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

thomaz hat geschrieben:da kommt bei mir immer nur:
TypeError: 'str' object cannot be interpreted as an index
Was für ein index? Sicher, bin() liefert eine Zeichenkette.
thomaz
User
Beiträge: 16
Registriert: Donnerstag 13. August 2009, 14:31

bin("test")
bin(test)
hab alle möglichen sachen ausprobiert, mag net^^
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

Was genau willst du eigentlich haben, „die“ „Binärform“ einer Variable gibt nicht. Offenbar hast du einen String vorliegen. Willst du wirklich einen String mit Einsen und Nullen haben oder die einzelnen Bytes deines Strings? ansonsten guck dir einfach mal die Implementierung der hashlib an.
thomaz
User
Beiträge: 16
Registriert: Donnerstag 13. August 2009, 14:31

ich will die einzelnen Bytes deines Strings.
Benutzeravatar
martin101986
User
Beiträge: 85
Registriert: Montag 3. Dezember 2007, 19:15
Wohnort: Steiermark, Österreich

Hallo,

wenn du eine Darstellung von den Zeichen im String im Binärformat haben willst:

Code: Alles auswählen


def strtobytes(s, out=bin):
    return [out(ord(c)) for c in s]

>>> strtobytes("test")
['0b1110100', '0b1100101', '0b1110011', '0b1110100']
>>>strtobytes("test",hex)
['0x74', '0x65', '0x73', '0x74']

Grüße
Martin
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

thomaz hat geschrieben:ich will die einzelnen Bytes deines Strings.

Code: Alles auswählen

map(ord, dein_string)
Wobei du da beachten musst, dass das keine Bytes sind sondern xx bit-Integer, einen wirklichen Byte-Typ hat Python nicht.
BlackJack

Wobei die `hashlib` die Strings haben möchte, ohne irgendwelche Umwandlungen in Zeichenketten, die nur aus 0en und 1en bestehen. Also wär's vielleicht ganz gut noch einmal das ursprüngliche Problem *genau* zu erfahren.
Antworten