Was ist der beste Weg, um von Netzwerk-Bitcount zu Netmask zu konvertieren?

8

Wenn ich beispielsweise eine Netzwerkspezifikation wie 172.20.10.0/24 habe, ist "24" die Bitanzahl. Was ist der beste Weg, um das zu einer Netzmaske wie 0xffffff00 zu konvertieren?

    
Choy 20.10.2008, 14:17
quelle

9 Antworten

8

Annahme von 32-Bit-Maske und 32-Bit-Int.

%Vor%

Hinweis: Dies ist nicht unbedingt die Antwort auf die Frage "Was ist der beste Weg, um die Netzwerkmaske für eine Schnittstelle zu erhalten?"

    
tvanfosson 20.10.2008 14:30
quelle
4

Ich tue es immer so (in deinem Fall cidr = 24):

%Vor%

Dies funktioniert nur mit ipv4Netmask, um tatsächlich uint32_t zu sein, mach es nicht int, da int nicht auf jedem System 32 Bit sein muss. Das Ergebnis wird in die Netzwerk-Byte-Reihenfolge konvertiert, da dies von den meisten Systemfunktionen erwartet wird.

    
Mecki 20.10.2008 15:06
quelle
2

Dies ist keine Programmierfrage, aber in Linux können Sie whatmask verwenden.

%Vor%

gibt

zurück %Vor%     
Eric Hogue 20.10.2008 14:23
quelle
2
%Vor%     
Robert 20.10.2008 14:33
quelle
1

Hier ist eine Lösung in VBScript, FWIW

%Vor%

Über die Befehlszeile

%Vor%     
bugmagnet 20.10.2008 15:30
quelle
1

Warum Zeit mit Subtraktion oder ternären Aussagen verschwenden?

%Vor%

Wenn Sie wissen, dass Ihre Ganzzahl genau 32 Bit lang ist, müssen Sie nur einmal 0xffffffff eingeben.

%Vor%

Beide kompilieren zu genau demselben Assembly-Code.

    
joeforker 24.02.2009 20:19
quelle
1

Seien Sie vorsichtig, wenn Sie die vorherigen Antworten mit Code wie:

verwenden %Vor%

oder

%Vor%

In mindestens C # wird zuerst die Anzahl der Verschiebungen mit 0x1F maskiert. Also für einen cidr mit Präfix 0 (dh den gesamten IPv4-Adressbereich):

%Vor%

was nicht das ist was du willst. Stattdessen sollten Sie Folgendes verwenden:

%Vor%     
RichB 16.12.2010 15:01
quelle
0

Du könntest etwas Einfaches versuchen, zum Beispiel das Bitcount und Dividieren durch 4. Das würde dir die führenden F's in der Maske geben. Und dann nimm den Rest und wechsele von 0 auf 3 Bits.

    
kafuchau 20.10.2008 14:23
quelle
0
%Vor%     
Chris Weber 14.04.2010 22:22
quelle

Tags und Links