Hallo,
erst mal Danke fuer die hilfe!
Bin schon weiter gekommen.
Ich habe einen String, der HEX Zeichen enthaelt. Leider muss ich dies biner aendern, da es so die Umwandlung nach Ascii nicht korrekt ist.
Wie macht man das am besten?
Wie wandel ich einen String nach binaer um?
binascii.a2b_hex(value)?
fuer jeden wert?
Dann muss ich von den ersten 8bit nur die linken 7 nehmen, und von dem naechsten vaule, dann das erste aus dem vorangegangenen und dann 6 aus dem naechsten...
Wie macht man das am besten in binaerform?
kann ich das irgendwie in eine form bringen in der ich z.B. mit val[2] af das dritt hoechste oder niedrigste Bit zugreife...
Danke,
Patrick
Zusammenfassung:
Will aus Hex binaer machen, auf die ich dann mit val zugreifen kann...
binaer arbeiten
Habe jetzt doch eine liste erstellt. Habe einfach eine kleine Tabelle gemacht 1-F und den passenden binary code. Und das dann in einen string gehaengt. Jetzt kann ich genau auf jedes bit zugreifen...
Danke,
Patrick
Danke,
Patrick
-
- User
- Beiträge: 773
- Registriert: Mittwoch 5. November 2003, 18:06
- Wohnort: Schweiz
- Kontaktdaten:
mhhh also wenn du einfach auf einzelne Bits zugreifen willst hilft dir vielleicht diese Funktion:
Beispielcode
Also das LSB ist Bit #0 und das MSB ist Bit #7
Gruss
PS: erklär mir nochmals was du genau mit diesen 7Bit und dann 6Bit oder so willst, da hab ich gar nix gerafft.
Code: Alles auswählen
def getBit(bit, value):
return (value&(2**bit))>>bit
Code: Alles auswählen
tmp = 8#entspricht in binär 0000 1000
print getBit(3,tmp)# ergibt 1 (fängt rechts an, von 0 bis 7)
Gruss
PS: erklär mir nochmals was du genau mit diesen 7Bit und dann 6Bit oder so willst, da hab ich gar nix gerafft.
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Hm... Das stimmt bei mir doch was nicht:
Code: Alles auswählen
def get_bit(bit, value):
return (value&(2**bit))>>bit
def get_binary( bit, value ):
result = [str( get_bit(i, bit) ) for i in xrange(value)]
return "".join( result )
for i in xrange( 16 ):
print "%4s - %s" % ( i, get_binary( i, 8 ) )
Code: Alles auswählen
0 - 00000000
1 - 10000000
2 - 01000000
3 - 11000000
4 - 00100000
5 - 10100000
6 - 01100000
7 - 11100000
8 - 00010000
9 - 10010000
10 - 01010000
11 - 11010000
12 - 00110000
13 - 10110000
14 - 01110000
15 - 11110000
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Sorry, das war nicht extra Ich kenn mich da auch nicht so aus...
Also so ist's dann richtig?
Also so ist's dann richtig?
Code: Alles auswählen
def get_bit(bit, value):
return (value&(2**bit))>>bit
def get_binary( bit, value ):
result = [str( get_bit(i, bit) ) for i in xrange(value,0,-1)]
return "".join( result )
for i in xrange( 16 ):
print "%4s - %s" % ( i, get_binary( i, 8 ) )
Code: Alles auswählen
0 - 00000000
1 - 00000000
2 - 00000001
3 - 00000001
4 - 00000010
5 - 00000010
6 - 00000011
7 - 00000011
8 - 00000100
9 - 00000100
10 - 00000101
11 - 00000101
12 - 00000110
13 - 00000110
14 - 00000111
15 - 00000111