Was ist der einfachste Weg, um einen zu einer binären Zeichenfolge in Perl hinzuzufügen?

7

Ich habe eine Variable, die eine 4-Byte-IPv4-Adresse für die Netzwerkreihenfolge enthält (diese wurde mit pack und der Ganzzahldarstellung erstellt). Ich habe eine andere Variable, auch eine 4-Byte-Netzwerk-Reihenfolge, Subnetz. Ich versuche, sie zusammen zu addieren und eins zu addieren, um die erste IP im Subnetz zu erhalten.

Um die ASCII-Darstellung zu erhalten, kann ich inet_ntoa($ip&$netmask) verwenden, um die Basisadresse zu erhalten, aber es ist ein Fehler, inet_ntoa((($ip&$netmask)+1) ; Ich bekomme eine Nachricht wie:

%Vor%

Also, was passiert, das Beste, was ich sagen kann, ist, dass ich die 4 Bytes ansehe und sehe, dass die 4 Bytes keine numerische Zeichenkette darstellen, und dann weis ich nicht, 1 hinzuzufügen.

Eine andere Art, es zu sagen: Was ich will, ist 1 zum niederwertigsten Byte zu addieren, von dem ich weiß, dass es das 4. Byte ist? Das heißt, ich möchte die Zeichenfolge \n\r&\n\r& nehmen und mit der Zeichenfolge %code% enden. Was ist der einfachste Weg, das zu tun?

Gibt es eine Möglichkeit, dies zu tun, ohne die Variable entpacken und neu packen zu müssen?

    
Daniel Papasian 21.10.2008, 14:17
quelle

2 Antworten

13

Was passiert, ist, dass Sie eine Byte-Zeichenfolge mit $ip&$netmask erstellen und dann versuchen, sie als Zahl zu behandeln. Dies wird als solches nicht funktionieren. Was Sie inet_ntoa einspeisen müssen, ist.

%Vor%

Ich glaube nicht, dass es einen einfacheren Weg dafür gibt.

    
Leon Timmermans 21.10.2008, 14:31
quelle
8

Verwirrende Ganzzahlen und Strings. Vielleicht hilft der folgende Code:

%Vor%

Welche Ausgaben:

%Vor%     
Liudvikas Bukys 21.10.2008 14:51
quelle

Tags und Links