вот решение, которое я разработал сегодня (надо было сначала погуглить!):
private static string IpToDecimal2(string ipAddress)
{
// need a shift counter
int shift = 3;
// loop through the octets and compute the decimal version
var octets = ipAddress.Split('.').Select(p => long.Parse(p));
return octets.Aggregate(0L, (total, octet) => (total + (octet << (shift-- * 8)))).ToString();
}
Я использую LINQ, лямбду и некоторые расширения для дженериков, поэтому, хотя он дает тот же результат, он использует некоторые новые функции языка, и вы можете сделать это в трех строках кода.
У меня есть объяснение в моем блоге, если вам интересно.
ура,
-jc