【发布时间】:2020-12-16 01:17:01
【问题描述】:
我需要将位数从 CIDR 表示法转换为实际的子网掩码。例如192.168.0.1/30。这是30 - 在网络掩码中设置的位数(在本例中 - 255.255.255.252)。我通过将位数转换为实际字符串然后使用u32::from_str_radix 方法来获取实际数字(我可以将其用于Ipv4Addr 结构,因为它实现了From<u32> 特征)。代码如下:
let bit_length = 30
let bits = format!("{:0<32}", "1".repeat(bit_length as usize));
net_mask = IpAddr::V4(u32::from_str_radix(bits.as_str().into(), 2)?.into());
我想知道当我们知道目标数字的大小(本例中为 32 位)时,是否有另一种可能更优雅的方法将位数转换为整数?也许有些我不知道的魔法?
【问题讨论】:
标签: rust type-conversion bit