perl Hilfe: pack Funktion für return buffer.readInt16BE() ?

Begonnen von Morgennebel, 20 Dezember 2019, 18:54:35

Vorheriges Thema - Nächstes Thema

Morgennebel

Moin Moin,


nach 20 Jahren fange ich wieder an zu programmieren und möchte ein NPM-Modul nach Perl migrieren.
Der Originalcode ist:


Decoder.prototype.decodeDPT8 = function (buffer) {
    return buffer.readInt16BE(0);
};


Ich möchte dies nach Perl konvertieren und verwende die pack()-Funktion. Jedoch kann ich keine Funktion für Signed Short Int in Big Endian finden...?
Entspricht signed short auf x86 automatisch Big Endian?

Danke, -MN
Einziger Spender an FHEM e.V. mit Dauerauftrag seit >= 24 Monaten

FHEM: MacMini/ESXi, 2-3 FHEM Instanzen produktiv
In-Use: STELLMOTOR, VALVES, PWM-PWMR, Xiaomi, Allergy, Proplanta, UWZ, MQTT,  Homematic, Luftsensor.info, ESP8266, ESERA

amenomade

x86 (und idR ARM auch) nutzt eher little endian um die Daten zu speichern. unpack hat nw. die benötigte Schalter, um ordenlich zu lesen.

Diese Seite könnte dir helfen: https://www.perlmonks.org/?node_id=224666
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus