2017-05-18 5 views
3

Ich habe ein Byte-Array, arr und eine Hexadezimalzahl a:Append String byteArray

arr = bytearray() 
a = 'FE' 

Wie kann ich diese Nummer anhängen byteArray den gleichen Wert haben, FE? Ich versuchte mit print(int(a, 16)), aber es scheint eine schlechte Idee zu sein (es druckt 254 anstelle von FE).

+0

Mögliche Duplikat [Eisen python: Wie man einen String an Bytearray anfügt] (http://stackoverflow.com/questions/22656250/iron-python-how-to-append-string-to-bytearray) –

+0

Alles ist korrekt - Sie analysieren den Hexadezimalwert mit ' int 'in eine Ganzzahl und dann 'print' gibt die Dezimaldarstellung aus. "FE" im Hex ist "254" in Dez. Verwenden Sie einfach 'arr.append (int (a, 16))' und alles wird korrekt sein. Oder möchten Sie es als eine Zeichenfolge, wie zwei Zeichen anhängen? – Eswcvlad

+0

@Eswcvlad: Wenn 'FE'' 254' ist, ist das in Ordnung. Ich habe vergessen, dies neu zu berechnen. So scheint es jetzt in Ordnung zu sein. Vielen Dank! – yak

Antwort

1

Die 254 ist korrekt, da 'FE' hexadezimal für 254: F = 15, E = 14: 15 * 16**1 + 14 * 16**0 = 254

Aber wenn Sie die Zeichen anhängen möchten Sie extend verwenden:

>>> arr = bytearray() 
>>> arr.extend('FE'.encode('latin-1')) # you can also choose a different encoding... 
>>> arr 
bytearray(b'FE') 
+1

Wie wäre es mit 'ba = bytearray (b" FE ")'? – stamaimer

+0

@stamaimer Nicht sicher, was du meinst, ich dachte, die Variable ''FE'' wurde als Variable (string) angegeben, also müsstest du sie trotzdem konvertieren (' encode'). – MSeifert