Forum: PC-Programmierung Integer aus 2 bytes generien python


von Linuxnewbi (Gast)


Lesenswert?

Hallo,
ich habe ein byte array
x=[0xE8,0x4]

0xE8 sind die ersten 8bits
0x4 sind die letzten 8 bits

dieses möchte ich in ein int umwandeln dabei sollte irgendetwas um die 
1246 rauskommen. Wie kann ich das in python am einfachsten machen???

von py (Gast)


Lesenswert?

y = x[0] | (x[1] << 8)

von kenny (Gast)


Lesenswert?

was genau ist Dein Ziel?
High Byte und Low Byte werte-genau in ein Long speichern und zum integer 
casten?

von Max M. (jens2001)


Lesenswert?

Linuxnewbi schrieb:
> 0x4

Was soll das sein?

von py (Gast)


Lesenswert?

Max M. schrieb:
> Was soll das sein?

Eine Zahl?

von cppbert (Gast)


Lesenswert?

Max M. schrieb:
> Linuxnewbi schrieb:
>> 0x4
>
> Was soll das sein?

Eine Zahl in hexadezimaler Schreibweise?

von was (Gast)


Lesenswert?

Max M. schrieb:
> Linuxnewbi schrieb:
>> 0x4
>
> Was soll das sein?

Da ist wohl 0x04 gemeint. Ja, 0x4 ist auch nicht falsch, aber 
Konventionen sind für alle da.

von Max M. (jens2001)


Lesenswert?

Linuxnewbi schrieb:
> 0xE8 sind die ersten 8bits
> 0x4 sind die letzten 8 bits

Die "ersten"/"letzten"? was soll das sein?
Wohl eher HigByte = 0x04, LowByte = 0xE8.


Linuxnewbi schrieb:
> 1246 rauskommen

0x04E8 = 1.256

von Mario M. (thelonging)


Lesenswert?

Linuxnewbi schrieb:
> in python am einfachsten

Seit Python 3.2 gibt es die Methode int.from_bytes(). Das kann man auch 
die Endianess und das Vorzeichen berücksichtigen.

von py (Gast)


Lesenswert?

was schrieb:
> Da ist wohl 0x04 gemeint. Ja, 0x4 ist auch nicht falsch, aber
> Konventionen sind für alle da.

Welche Konvention soll das denn sein?
Ich kenne nur die Konvention führende Nullen wegzulassen.

von was (Gast)


Lesenswert?

py schrieb:
> Welche Konvention soll das denn sein?

Die Konvention, dass man 1 Byte als 2 Hexadezimalstellen darstellt, 
inkl. aller führenden Nullen.
Das vereinfacht die tabellarische Darstellung.

Glaubst du nicht? Dann hast du noch nie einen Hex-Editor benutzt.

von cppbert (Gast)


Lesenswert?

was schrieb:
> py schrieb:
>> Welche Konvention soll das denn sein?
>
> Die Konvention, dass man 1 Byte als 2 Hexadezimalstellen darstellt,
> inkl. aller führenden Nullen.
> Das vereinfacht die tabellarische Darstellung.
>
> Glaubst du nicht? Dann hast du noch nie einen Hex-Editor benutzt.

Ist für die Frage und Antwort völlig unrelevant

von Mario M. (thelonging)


Lesenswert?

was schrieb:
> Die Konvention, dass man 1 Byte als 2 Hexadezimalstellen darstellt,
> inkl. aller führenden Nullen.

Nicht in Python.
https://docs.python.org/3/reference/lexical_analysis.html#integer-literals

von Tom K. (ez81)


Lesenswert?

Der Vollständigkeit halber:
Wenn es komplizierter als 2 Bytes wird, gibt es 
https://docs.python.org/3/library/struct.html
1
from struct import unpack
2
a = b'\xE8\x04'
3
print( unpack('H', a) )

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.