1
所以我知道有些庫可以爲我做到這一點,但我想學習打包/解壓縮。瞭解包/解包perl
我的目標是我有一個用戶輸入一個IP地址/子網掩碼,然後驗證它是有效的。
我認爲這樣做的一種方式是「sprintf」並獲得二進制值可以說192.168.1.1。這是一個好的解決方案,但然後我需要預先安排所需的0的數量噸使它'8位'
這似乎是很多不必要的工作,當pack
可以把東西以二進制格式。我使用N
模板,我發現http://perldoc.perl.org/functions/pack.html我的第一個目標是獲得一個IP地址,將其轉換爲二進制,然後將其轉換回來。
$ip = "192.168.1.1";
$bi = pack ("N*", $ip);
print unpack("N*",$bi),"\n";
和我得到的輸出是192
所以很顯然,我不明白是怎麼回事。
這裏究竟發生了什麼?
始終使用'使用嚴格的;使用警告qw(全部);'! (「'Argument」192.168.1.1「在包中不是數字」) – ikegami