- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
public static long NormalizeIp(this long ip)
{
var ipAddress = new IPAddress(Math.Abs(ip)).ToString();
return ipAddress.IpToLong();
}
static long IpToLong(this string ip)
{
double num = 0;
if (!string.IsNullOrEmpty(ip))
{
var ipBytes = ip.Split('.');
for (var i = ipBytes.Length - 1; i >= 0; i--)
{
num += ((int.Parse(ipBytes[i]) % 256) * Math.Pow(256, (3 - i)));
}
}
return (long)num;
}
Получаем IP вот таким вот методом - BitConverter.ToInt32(IPAddress.Parse(ip) .GetAddressBytes(), 0)
Приводим к типу long (неявным методом, т.е. long a = ip_address) и в таком виде сохраняем в базу как bigint (int64)
Затем берем его из базы и пытаемся провернуть с ним вот такой NormalizeIp
Печаль (