【原】IP地址存储问题
今天,Boylee问我知道不知道IP地址如何合理的存储到数据库中?我不知道,然后听他说了思路,记录下来。
1public 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 }
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 }
前台用类似
string strIp = Request.UserHostAddress;
取得访问的IP地址