【原】IP地址存储问题
今天,Boylee问我知道不知道IP地址如何合理的存储到数据库中?我不知道,然后听他说了思路,记录下来。
1
public class CTrans
2
{
3
/// <summary>
4
/// IP地址转数据
5
/// </summary>
6
/// <param name="strIp">IP地址</param>
7
/// <returns>数据</returns>
8
public static uint IPToData(String strIp)
9
{
10
// 将127.0.0.1 形式的IP地址转换成10进制整数
11
uint[] ip = new uint[4];
12![]()
13
// 找到IP地址字符串中.的位置
14
int position1 = strIp.IndexOf(".");
15
int position2 = strIp.IndexOf(".", position1 + 1);
16
int position3 = strIp.IndexOf(".", position2 + 1);
17![]()
18
// 将每个.之间的字符串转换成整型
19
ip[0] = Convert.ToUInt32(strIp.Substring(0, position1));
20
ip[1] = Convert.ToUInt32(strIp.Substring(position1 + 1, position2-(position1 + 1)));
21
ip[2] = Convert.ToUInt32(strIp.Substring(position2 + 1, position3-(position2 + 1)));
22
ip[3] = Convert.ToUInt32(strIp.Substring(position3 + 1));
23![]()
24
// ip0*256*256*256 + ip1*256*256 + ip2*256 + ip3
25
return (ip[0] << 24) + (ip[1] << 16) + (ip[2] << 8) + ip[3];
26
}
27![]()
28
/// <summary>
29
/// 数据转IP地址
30
/// </summary>
31
/// <param name="uintIP">数据</param>
32
/// <returns>IP地址</returns>
33
public static String DataToIP(uint uintIP)
34
{
35
// 将10进制整数形式转换成127.0.0.1形式的IP地址
36
StringBuilder sb = new StringBuilder("");
37
sb.Append(Convert.ToString(uintIP >> 24));
38
sb.Append(".");
39
sb.Append(Convert.ToString((uintIP & 0x00FFFFFF) >> 16));
40
sb.Append(".");
41
sb.Append(Convert.ToString((uintIP & 0x0000FFFF) >> 8));
42
sb.Append(".");
43
sb.Append(Convert.ToString(uintIP & 0x000000FF));
44
sb.Append(".");
45
return sb.ToString();
46
}
47
}
public class CTrans2
{3
/// <summary>4
/// IP地址转数据5
/// </summary>6
/// <param name="strIp">IP地址</param>7
/// <returns>数据</returns>8
public static uint IPToData(String strIp)9
{10
// 将127.0.0.1 形式的IP地址转换成10进制整数11
uint[] ip = new uint[4];12

13
// 找到IP地址字符串中.的位置14
int position1 = strIp.IndexOf(".");15
int position2 = strIp.IndexOf(".", position1 + 1);16
int position3 = strIp.IndexOf(".", position2 + 1);17

18
// 将每个.之间的字符串转换成整型19
ip[0] = Convert.ToUInt32(strIp.Substring(0, position1));20
ip[1] = Convert.ToUInt32(strIp.Substring(position1 + 1, position2-(position1 + 1)));21
ip[2] = Convert.ToUInt32(strIp.Substring(position2 + 1, position3-(position2 + 1)));22
ip[3] = Convert.ToUInt32(strIp.Substring(position3 + 1));23

24
// ip0*256*256*256 + ip1*256*256 + ip2*256 + ip325
return (ip[0] << 24) + (ip[1] << 16) + (ip[2] << 8) + ip[3];26
}27

28
/// <summary>29
/// 数据转IP地址30
/// </summary>31
/// <param name="uintIP">数据</param>32
/// <returns>IP地址</returns>33
public static String DataToIP(uint uintIP)34
{35
// 将10进制整数形式转换成127.0.0.1形式的IP地址36
StringBuilder sb = new StringBuilder("");37
sb.Append(Convert.ToString(uintIP >> 24));38
sb.Append(".");39
sb.Append(Convert.ToString((uintIP & 0x00FFFFFF) >> 16));40
sb.Append(".");41
sb.Append(Convert.ToString((uintIP & 0x0000FFFF) >> 8));42
sb.Append(".");43
sb.Append(Convert.ToString(uintIP & 0x000000FF));44
sb.Append(".");45
return sb.ToString(); 46
}47
}
前台用类似
string strIp = Request.UserHostAddress;


浙公网安备 33010602011771号