Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 1999 Teil von Oktober

SELFHTML Forumsarchiv
Aus Binärwert Integer machen

Informationsseite
  1. Seite (PERL) Aus Binärwert Integer machen von Erik Tews, 30. 10. 1999, 17:01
nach unten

Aus Binärwert Integer machen

Die folgende Nachricht zum Thema stammt von: Erik Tews, 30. 10. 1999, 17:01

Hi

Ich suche eine Perl-Funtkion, die mir aus einem 4 Byte Binärwort, oder eine IP in der Form 24.54.25.64 einen Integer machen kann. Kennt wer so eine Funktion?

Ich brauche auch noch eine Funktion, mit der ich so einen Integer-Wert wieder zurückkonvertieren kann.

In C gibt es da glaube ich inet_ntoa

nach obennach unten

Aus Binärwert Integer machen

Die folgende Nachricht zum Thema stammt von: Tom, 01. 11. 1999, 12:51

Hallo Erik

Die Umwandlung von Binärwerten (oder anderen binären Datenstrukturen) in Perl-Skalare erfolgt über die pack()/unpack()-Funktion.

Mit unpack("C",sunstr($IPValue,0,1)) erhälst Du das 1. Byte,
mit unpack("C",sunstr($IPValue,1,1)) das 2. Byte,
mit unpack("C",sunstr($IPValue,2,1)) das 3. Byte und
mit unpack("C",sunstr($IPValue,3,1)) das 4. Byte.

Dabei bedeutet das "C", das der binäre Wert als "unsigned char" interpretiert werden soll.
Mehr Infos im Manual unter perlfunc -> pack().

Grüsse

Tom

nach obennach unten

Aus Binärwert Integer machen

Die folgende Nachricht zum Thema stammt von: Jörk Behrends, 02. 11. 1999, 10:49

Hallo Tom und Erik,

»» Mit unpack("C",sunstr($IPValue,0,1)) erhälst Du das 1. Byte,
»» mit unpack("C",sunstr($IPValue,1,1)) das 2. Byte,
»» mit unpack("C",sunstr($IPValue,2,1)) das 3. Byte und
»» mit unpack("C",sunstr($IPValue,3,1)) das 4. Byte.

Man kann aber auch noch ein bisschen komprimieren ... mal abgesehen davon, daß man an Stelle eines Sonnenstring wohl eher einen Unterstring (substring) haben möchte ;-)

mit unpack("C*", $IPValue) erhält man eine Liste der Bytes. Möchte man nicht den ganzen String sondern beispielsweise nur 4 Zeichen gewandelt haben kann man aber auch den * durch eine Zahl (4) ersetzen.

Möchte man aber alles in eine einzige Zahl bekommen (so habe ich Erik zumindest verstanden), kann man den String auch als Long interpretieren.

unpack("L", $IPValue) hat das höchstwertige Byte am Ende und
unpack("N", $IPValue) hat das höchstwertige Byte am Anfang des Strings

Jörk

nach oben
Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 1999 Teil von Oktober

© 1998-2006 Seite Impressum, Software: Classic Forum