子网掩码只有一个功能,就是将IP地址划分为网络地址和主机地址两部分。 如同现实生活中的通讯地址,可以看作省市部分和具体门牌号部分。相同的IP地址,但掩码不一样,则指向的网络部分和主机部分不一样。子网掩码用来判断任意两台计算机的IP地址是否在同一个子网中的根据。如果相同,说明两台计算机在同一个子网中,可以直接通讯;
点分十进制表示法,如: 255.255.255.0;另一种是用 前缀长度 表示,如: 24;子网掩码和前缀长度的换算:
case 1
255.255.255.0 --> 11111111 11111111 11111111 00000000
网络号: 24
主机号: 8
ip个数: 256
子网掩码“255.255.255.0”的前缀长度为: 24;
后面一个数字可以在0~255范围内任意变化,因此可以提供256个IP地址。但是实际可用的IP地址数量是256-2,即254个,因为主机号不能全是“0”或全是“1”。
case 2
255.255.0.0 --> 11111111 11111111 00000000 00000000
网络号: 16
主机号: 16
ip个数: 256² = 65536
子网掩码“255.255.0.0”的前缀长度为: 16;
后面两个数字可以在0~255范围内任意变化,可以提供 256² 个IP地址。但是实际可用的IP地址数量是256²-2,即65534个。
case 3
255.255.252.0 --> 11111111 11111111 11111100 00000000
网络号: 22
主机号: 10
ip个数: 256 * 2 = 512
子网掩码“255.255.252.0”的前缀长度为: 22;
可以提供 512 个IP地址。但是实际可用的IP地址数量是512 -2,即510个。
...
不想计算的小伙伴可以参考下表
| 子网掩码 | 网络号/位 | IP数 |
|---|---|---|
| 255.255.255.255 | 32 | 1 |
| 255.255.255.254 | 31 | 2 |
| 255.255.255.252 | 30 | 4 |
| 255.255.255.248 | 29 | 8 |
| 255.255.255.240 | 28 | 16 |
| 255.255.255.224 | 27 | 32 |
| 255.255.255.192 | 26 | 64 |
| 255.255.255.128 | 25 | 128 |
| 255.255.255.0 | 24 | 256 |
| 255.255.254.0 | 23 | 512 |
| 255.255.252.0 | 22 | 1024 |
| 255.255.248.0 | 21 | 2048 |
| 255.255.240.0 | 20 | 4096 |
| 255.255.224.0 | 19 | 8192 |
| 255.255.192.0 | 18 | 16384 |
| 255.255.128.0 | 17 | 32768 |
| 255.255.0.0 | 16 | 65536 |
| 255.254.0.0 | 15 | 131072 |
| 255.252.0.0 | 14 | 262144 |
| 255.248.0.0 | 13 | 524288 |
| 255.240.0.0 | 12 | 1048576 |
| 255.224.0.0 | 11 | 2097152 |
| 255.192.0.0 | 10 | 4194304 |
| 255.128.0.0 | 9 | 8388608 |
| 255.0.0.0 | 8 | 16777216 |
| 254.0.0.0 | 7 | 33554432 |
| 252.0.0.0 | 6 | 67108864 |
| 248.0.0.0 | 5 | 134217728 |
| 240.0.0.0 | 4 | 268435456 |
| 224.0.0.0 | 3 | 536870912 |
| 192.0.0.0 | 2 | 1073741824 |
| 128.0.0.0 | 1 | 2147483648 |
| 0.0.0.0 | 0 | 4294967296 |
在我的Rails(2.3,Ruby1.8.7)应用程序中,我需要将字符串截断到一定长度。该字符串是unicode,在控制台中运行测试时,例如'א'.length,我意识到返回了双倍长度。我想要一个与编码无关的长度,以便对unicode字符串或latin1编码字符串进行相同的截断。我已经了解了Ruby的大部分unicode资料,但仍然有些一头雾水。应该如何解决这个问题? 最佳答案 Rails有一个返回多字节字符的mb_chars方法。试试unicode_string.mb_chars.slice(0,50)
我试图获取一个长度在1到10之间的字符串,并输出将字符串分解为大小为1、2或3的连续子字符串的所有可能方式。例如:输入:123456将整数分割成单个字符,然后继续查找组合。该代码将返回以下所有数组。[1,2,3,4,5,6][12,3,4,5,6][1,23,4,5,6][1,2,34,5,6][1,2,3,45,6][1,2,3,4,56][12,34,5,6][12,3,45,6][12,3,4,56][1,23,45,6][1,2,34,56][1,23,4,56][12,34,56][123,4,5,6][1,234,5,6][1,2,345,6][1,2,3,456][123
我有一个驼峰式字符串,例如:JustAString。我想按照以下规则形成长度为4的字符串:抓取所有大写字母;如果超过4个大写字母,只保留前4个;如果少于4个大写字母,则将最后大写字母后的字母大写并添加字母,直到长度变为4。以下是可能发生的3种情况:ThisIsMyString将产生TIMS(大写字母);ThisIsOneVeryLongString将产生TIOV(前4个大写字母);MyString将生成MSTR(大写字母+tr大写)。我设法用这个片段解决了前两种情况:str.scan(/[A-Z]/).first(4).join但是,我不太确定如何最好地修改上面的代码片段以处理最后一种
我有一个存储主机名的Ruby数组server_names。如果我打印出来,它看起来像这样:["hostname.abc.com","hostname2.abc.com","hostname3.abc.com"]相当标准。我想要做的是获取这些服务器的IP(可能将它们存储在另一个变量中)。看起来IPSocket类可以做到这一点,但我不确定如何使用IPSocket类遍历它。如果它只是尝试像这样打印出IP:server_names.eachdo|name|IPSocket::getaddress(name)pnameend它提示我没有提供服务器名称。这是语法问题还是我没有正确使用类?输出:ge
在Ruby1.9.3(可能还有更早的版本,不确定)中,我试图弄清楚为什么Ruby的String#split方法会给我某些结果。我得到的结果似乎与我的预期相反。这是一个例子:"abcabc".split("b")#=>["a","ca","c"]"abcabc".split("a")#=>["","bc","bc"]"abcabc".split("c")#=>["ab","ab"]在这里,第一个示例返回的正是我所期望的。但在第二个示例中,我很困惑为什么#split返回零长度字符串作为返回数组的第一个值。这是什么原因呢?这是我所期望的:"abcabc".split("a")#=>["bc"
我正在使用Ruby,我正在与一个网络端点通信,该端点在发送消息本身之前需要格式化“header”。header中的第一个字段必须是消息长度,它被定义为网络字节顺序中的2二进制字节消息长度。比如我的消息长度是1024。如何将1024表示为二进制双字节? 最佳答案 Ruby(以及Perl和Python等)中字节整理的标准工具是pack和unpack。ruby的packisinArray.您的长度应该是两个字节长,并且按网络字节顺序排列,这听起来像是n格式说明符的工作:n|Integer|16-bitunsigned,network(bi
有没有一种简单的方法可以将给定的整数格式化为具有固定长度和前导零的字符串?#convertnumberstostringsoffixedlength3[1,12,123,1234].map{|e|???}=>["001","012","123","234"]我找到了解决方案,但也许还有更聪明的方法。format('%03d',e)[-3..-1] 最佳答案 如何使用%1000而不是进行字符串操作来获取最后三位数字?[1,12,123,1234].map{|e|format('%03d',e%1000)}更新:根据theTinMan的
我需要根据字符串路径的长度将字符串路径数组转换为符号、哈希和数组的数组给定以下数组:array=["info","services","about/company","about/history/part1","about/history/part2"]我想生成以下输出,对不同级别进行分组,根据级别的结构混合使用符号和对象。产生以下输出:[:info,:services,about:[:company,history:[:part1,:part2]]]#altsyntax[:info,:services,{:about=>[:company,{:history=>[:part1,:pa
我想验证一个电子邮件地址是否是PayPal用户。是否有API调用来执行此操作?是否有执行此操作的ruby库?谢谢 最佳答案 GetVerifiedStatus来自PayPal'sAdaptiveAccounts平台会为您做这件事。PayPal没有任何codesamples或SDKs用于Ruby中的自适应帐户,但我确实找到了编写codeforGetVerifiedStatusinRuby的人.您需要更改该代码以检查他们拥有的帐户类型的唯一更改是更改if@xml['accountStatus']!=nilaccount_status
我想在Ruby的TCPServer中获取客户端的IP地址。以及(如果可能的话)MAC地址。例如,Ruby中的时间服务器,请参阅评论。tcpserver=TCPServer.new("",80)iftcpserverputs"Listening"loopdosocket=tcpserver.acceptifsocketThread.newdoputs"Connectedfrom"+#HERE!HowcanigettheIPAddressfromtheclient?socket.write(Time.now.to_s)socket.closeendendendend非常感谢!