Schrift
[thread]7814[/thread]

pack/unpack Funktionen

Leser: 1


<< >> 4 Einträge, 1 Seite
squantes
 2006-03-22 12:33
#63938 #63938
User since
2006-03-21
3 Artikel
BenutzerIn
[default_avatar]
Hi,
ich formuliere mein Problem anders :)

Ich habe gelesen, dass pack "H32" einen String in hex String umwandelt.
Woraus besteht ein hex string? Nicht aus Zeichen [0-9] und [a-f]?
Wenn ja wieso wird dann die Ausgabe des untenstehenden Codes (im Browser) so
«Íï4Vx«Íï4Vx
dargestellt?

----------------------------------------------
$myVar="abcdef1234567890abcdef1234567890";
$myHexVar= pack "H32", $myVar;
print $myHexVar;
----------------------------------------------

Was macht eigentlich pack und unpack funktionen von Perl?

sQ
vayu
 2006-03-22 12:49
#63939 #63939
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
weil dein Hex-string als Ascii Code (oder ein anderer Zeichensatz) interpretiert wird.

wieso willst du eigentlich eine bereits im hexadezimal system stehende Zahl nach Hex konvertieren? das geht doch gar nicht ;)

wenn du willst das perl den string als eine Hex-Zahl interpretiert mach folgendes:

Code: (dl )
$myHexVar = hex($myVar);


die zahl darf allerdings 32Bit nicht überschreiten. Sprich, nicht mehr als 8 Stellen haben.

zu pack und unpack siehe

perldoc -f pack
und
perldoc -f unpack\n\n

<!--EDIT|vayu|1143024769-->
esskar
 2006-03-22 19:13
#63940 #63940
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
[quote=vayu,22.03.2006, 11:49]
Code: (dl )
$myHexVar = hex($myVar);


die zahl darf allerdings 32Bit nicht überschreiten. Sprich, nicht mehr als 8 Stellen haben.[/quote]
Code: (dl )
1
2
3
4
my $x = unpack('h*', 'abcdef1234567890abcdef1234567890');
print "$x\n";
my $y = pack('h*', $x);
print "$y\n";
Dubu
 2006-03-22 23:56
#63941 #63941
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Um es mal direkt zu sagen: pack ("H32", $str) erwartet in $str einen String bestehend aus 32 Hexziffern (also 0 .. 9, a .. f bzw. A .. F) und liefert einen String mit den sich aus den Hexwerten ergebenden Werten/Zeichen. Nicht umgekehrt. Aus "48656c6c6f2c206d7920776f726c6421" wird also "Hello, my world!".
Die genauen Regeln stehen in der Manpage.
<< >> 4 Einträge, 1 Seite



View all threads created 2006-03-22 12:33.