FHEM Forum

FHEM - Entwicklung => FHEM Development => Thema gestartet von: CoolTux am 20 Januar 2018, 08:58:58

Titel: decimal in Hex und Hex in Hex little endian
Beitrag von: CoolTux am 20 Januar 2018, 08:58:58
Die PIN wird dabei hexadezimal kodiert und umgekehrt übertragen (little endian). Beispiel: die PIN 123456 ist hexadezimal 0x1e240. Als little endian (umgekehrte Übertragung) und mit Nullen auf 4 Byte aufgefüllt ergibt sich: 0x40e20100.


$dec = 123456;
$hex = sprintf('%2x',$dec);
$hex 1e240



Aber wie komme ich nun zu meinem little endian aufgefüllt auf 4 Byte länge 40e20100.
Die 4 Byte bekomme ich hin, aber das little endian leider nicht.


Kann mir bitte jemand einen Anstoß geben?
Titel: Antw:decimal in Hex und Hex in Hex little endian
Beitrag von: justme1968 am 20 Januar 2018, 11:42:20
zum beispiel so:use strict;
use warnings;
           
my $pin = 123456;
           
my ($hex) = unpack( 'V', pack( 'N', $pin ) );
           
$hex = sprintf('%2x',$hex);
print "$hex\n";


also erst endian drehen und dann hex draus machen.

gruss
  andre
Titel: Antw:decimal in Hex und Hex in Hex little endian
Beitrag von: CoolTux am 20 Januar 2018, 11:50:41
Also auf die Idee wäre ich jetzt nicht gekommen, weil da ja stand aus dem Hex ein LittleBigPlanet Endian machen. Oh man, vielen Dank Andre, ich schaue es mir heute Abend mal an. Hab ich Mal wieder zu verquer gedacht.
Titel: Antw:decimal in Hex und Hex in Hex little endian
Beitrag von: rudolfkoenig am 20 Januar 2018, 14:53:38
andre hat die Loesung geliefert, der Anstoss waere "perldoc -f pack"
Titel: Antw:decimal in Hex und Hex in Hex little endian
Beitrag von: CoolTux am 20 Januar 2018, 15:02:58
Vielen Dank ihr beide, habe es getestet und läuft.
Die pack unpack Lösung hatte ich auch gefunden, hab nur den Fehler gemacht die Reihenfolge anders zu machen.


Nun kann ich auch eine Pin an den BT Thermostaten senden.


Grüße und Euch ein entspanntes Wochenende.