Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]7239[/thread]

Deklaration einer Bytefolge



<< >> 2 Einträge, 1 Seite
ebandit
 2005-08-28 17:23
#57495 #57495
User since
2005-08-28
1 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich versuche gerade ein perl-skript zu programmieren, dass über IO::Socket TCP Pakete verschickt und empfängt.

Bei den zu verschickenden Paketen handelt es sich um Byte-Werte (also kein ASCII-String). Inzwischen habe ich es geschafft, dass mein Perl-Programm die Byte-Folge aus einer Binärdatei in eine Variable einliest.

Code: (dl )
1
2
3
4
open DATA, "/tmp/1.bin";
read DATA, $data, 223;
close DATA;
print $socket $data;


Nun möchte ich die Byte-Folge aber als Variable in Perl deklarieren, woran ich bisher leider gescheitert bin, da ich die korrkete Syntax für die Deklaration einer Bytefolge nicht gefunden habe.

Die ersten 8 Bytes sind : 0x62 0x6d 0x69 0x63 0x02 0x01 0x00 0xdf

Hab's schon mit

Code: (dl )
$data=pack("h*",0x62,0x6d,0x69,0x63,0x02,0x01,0x00,0xdf);


versucht, hat aber nicht funktioniert.

Was mir fehlt ist, wie man eine Bytefolge deklariert:

Code: (dl )
1
2
3
4
$data= ???

...
print $socket $data;


Für einen Perl-Experten dürfte es kein großes Problem sein, aber ich bin schon am verzweifeln. Bitte um Hilfe!

Danke im voraus!!!\n\n

<!--EDIT|ebandit|1125240475-->
esskar
 2005-08-28 19:43
#57496 #57496
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
hi.

zum einlesen aus einer datei empfehle ich noch binmode, also
Code: (dl )
1
2
3
4
5
open DATA, "/tmp/1.bin" or die;
binmode DATA;
read DATA, $data, 223;
close DATA;
print $socket $data;


dein pack ansatz war schon ganz gut, jedoch:

Code: (dl )
$data=pack("H*","626d6963020100df");
<< >> 2 Einträge, 1 Seite



View all threads created 2005-08-28 17:23.