Forum: PC-Programmierung Integer aus 2 bytes generien python


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
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) )

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.