String To Bytes eleganter?

Begonnen von amenomade, 17 Mai 2020, 20:50:47

Vorheriges Thema - Nächstes Thema

amenomade

Hallo Perl Experten

Ich habe es so gelöst, aber es gibt bestimmt eine bessere Art (z.B. mit unpack oder split?) :
sub
stringToBytes
{
   my ($input) = @_;
   my @output;
   for (my $i = 0; $i < length($input); $i++) {
      push @output, ord(substr($input, $i, 1));
   }
   return @output;
}

(ja, ich weiss, @_ => shift... ;) )
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Sidey

Sicher, geht das auch ohne Schleife:

https://docstore.mik.ua/orelly/perl4/cook/ch01_05.htm

Aus der Bezeichnung string2byte geht für mich aber nicht hervor um was für eine String es sich handelt.

Grüße Sidey

Gesendet von meinem Moto Z (2) mit Tapatalk

Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker

amenomade

#2
Die String ist das Ergebnis von einer AES-Entzifferung und enthält möglicherweise nicht-druckbare Zeichen

Dies sieht interessant aus:
@ascii_character_numbers = unpack("C*", "sample"); print "@ascii_character_numbers\n";
Ich werde testen.

Ob unpack C und ord das gleiche machen, ist die Frage.

Vielen Dank!
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

amenomade

Jepp! Funktioniert!
output = 35 39 58 39 44 60 58 95 37 37 0 0 0 33 45 21 93 15 26 26 43 0 9 0 0 127 121 127 121 33 1 1 1 1 5 20 70 6 66 16 0 0 10 0 0 1 33 184
Unpack = 35 39 58 39 44 60 58 95 37 37 0 0 0 33 45 21 93 15 26 26 43 0 9 0 0 127 121 127 121 33 1 1 1 1 5 20 70 6 66 16 0 0 10 0 0 1 33 184

Vielen Dank nochmal :)
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus