IP addresses can be stored in a database in any of several ways.  These ways may vary based on the volume of the data.  I was dealing with quite a large amount of data for user authentication purpose, and needed a way to minimize the storage.

IP地址可以通过多种方式存储在数据库中。 这些方式可能会根据数据量而有所不同。 我正在处理大量数据以进行用户身份验证,因此需要一种最小化存储的方法。

So, let's look at a few ways we can store an IP address.

因此,让我们看一下存储IP地址的几种方法。

1.  Together as a string in a CHAR(15) column; e.g:

1.作为字符串一起在CHAR(15)列中使用; 例如:

'192.168.0.1'

'192.168.0.1'

2.  Four separate TINYINT columns; e.g.:

2.四个独立的TINYINT列; 例如:

192    168    0    1

192168 0 1

3.  Store it as a numeric value (a single INT or LONG column); e.g:

3.将其存储为数值(单个INT或LONG列); 例如:

3232235521

3232235521

The first method’s advantages are simple programming and it is directly readable, but it requires more storage space.   The second and third methods use comparatively less storage space, but they require additional programming and data handling.

第一种方法的优点是编程简单,可以直接读取,但是需要更多的存储空间。 第二种和第三种方法使用相对较少的存储空间,但是它们需要额外的编程和数据处理。

Herewith I am going to share a code snip that used to store IP address as a numeric value

我将与您分享一个代码片段,该片段用于将IP地址存储为数字值

Convert IP address to a Numeric Value

将IP地址转换为数值

//A.B.C.D <=> A*256^3 + B*256^2 + C*256 + D
//        <=> A* 16777216 + B*65536 + C*256 + D long val = (long.Parse(splitArray[0]) * 16777216) + (long.Parse(splitArray[1]) * 65536) + (long.Parse(splitArray[2]) * 256) + (long.Parse(splitArray[3])); MessageBox.Show(val.ToString());

Convert Numeric Value to IP address

将数值转换为IP地址

long ipRem1, ipRem2, ipRem3; // Convert the text value as long
long convertValue = long.Parse(longValueTextBox.Text.Trim()); // Re-Calculation
long ipAdd1 = Math.DivRem(convertValue, 16777216, out ipRem1);
long ipAdd2 = Math.DivRem(ipRem1, 65536, out ipRem2);
long ipAdd3 = Math.DivRem(ipRem2, 256, out ipRem3); // Construct IP address
string ipAddress = ipAdd1.ToString().Trim() + "."  + ipAdd2.ToString().Trim() + "."  + ipAdd3.ToString().Trim() + "."  + ipRem3.ToString().Trim(); MessageBox.Show(convertValue + " ---> " + ipAddress);

Also you can check the validity of the single-value IP address by using this function:

您也可以使用以下功能检查单值IP地址的有效性:

/// <summary>
/// Checks the validity.
/// </summary>
/// <param name="values">The values.</param>
/// <returns></returns>
private static bool CheckValidity(IEnumerable<string> values)
{ foreach(var val in values) { int tempval; try { tempval = Int32.Parse(val); } catch(Exception) { return false; } if (tempval < 0 || tempval > 255) { return false; } } return true;
}

翻译自: https://www.experts-exchange.com/articles/4107/Store-IP-Address-in-a-Database.html

在数据库中存储IP地址相关推荐

  1. mysql中存储ip地址,将ip转换为整数存储

    mysql中将ip转换为整数存储,可以节省空间和提高性能,但是不利于阅读.<msql高性能>中推荐将ip地址转换为整数,用一个无符号的32位的整数存储. select INET_ATON( ...

  2. mysql数据库如何修改ip地址

    在MySQL数据库中修改IP地址,需要修改MySQL的配置文件(my.cnf或my.ini),并在其中更改相关的IP设置. 具体步骤如下: 打开MySQL的配置文件:在Windows系统中,可以在&q ...

  3. mysql数据库ip地址_MySQL数据库存储IP地址的方法

    为什么要问如何存储IP? 首先就来阐明一下部分人得反问:为什么要问IP得怎样存,直接varchar类型不就得了吗? 其实做任何程序设计都要在功能实现的基础上最大限度的优化性能.而数据库设计是程序设计中 ...

  4. Mysql数据库存储ip地址

    很多时候我们数据库存储ip地址都是以字符串的形式的,毕竟那个ip地址点来点去的,其他类型都无法存储了,今天带来一个小知识,mysql中的inet_aton使用 从上图可以看到,使用这个函数可以把ip地 ...

  5. 数据库存储 IP 地址的几种方式

    数据类型 占用空间 可读性排名 查询效率排名 储存方式 varchar(15) 7-15字节 1 4 192.168.120.65 bigint 8字节 2 1 19216812065 int 4字节 ...

  6. MySQL如何有效的存储IP地址

    文章目录 序言 工具类实现转换 数据库函数实现转换 一.IP地址应该怎么存 二.整数存储 IP 地址的查询性能实验 1.测试范围查询: 2.IP精确查询: 3.整理一下结果发现: 总结 首先就来阐明一 ...

  7. MySQL怎样存储IP地址

    为什么要问如何存储IP 首先就来阐明一下部分人得反问:为什么要问IP得怎样存,直接varchar类型不就得了吗? 其实做任何程序设计都要在功能实现的基础上最大限度的优化性能.而数据库设计是程序设计中不 ...

  8. mysql存储ip地址_MySQL怎样存储IP地址

    为什么要问如何存储IP 首先就来阐明一下部分人得反问:为什么要问IP得怎样存,直接varchar类型不就得了吗? 其实做任何程序设计都要在功能实现的基础上最大限度的优化性能.而数据库设计是程序设计中不 ...

  9. 【mysql】MySQL存储IP地址

    为什么要问如何存储IP 首先就来阐明一下部分人得反问:为什么要问IP得怎样存,直接varchar类型不就得了吗? 其实做任何程序设计都要在功能实现的基础上最大限度的优化性能.而数据库设计是程序设计中不 ...

最新文章

  1. 智源沙龙:人工智能的技术发展与投资
  2. bootstrap菜单展开收起_菜单展开及收缩效果 bootstrap+jquery
  3. 【中级软考】软件质量模型的六大特性27个子特性(软件质量特性:功能性、可靠性、易用性、效率性、软件维护性、软件可移植性)
  4. android sendmessage和post的区别,handler中post和send方式区别
  5. 文字 竖排居中_学会了这几招,瞬间就搞定PPT文字排版问题!
  6. excel中怎么把超链接的结果(图片)直接显示出来_把500张产品图片导入Excel里?用这个方法可超速完成,码住...
  7. 简要说明php数组的类型,php数组的概述及分类与声明代码演示
  8. Day04:继承的意义(下) / 访问控制 / static和final
  9. android 自定义加载动画效果,Android自定义加载动画-旋转的叶子
  10. 服务器接收到其他服务器传送的数据_其他-查找网内的其他DHCP服务器-从零开始学RouterOS系列21...
  11. 三维点云配准 matlab,一种基于保局PCA的三维点云配准方法与流程
  12. maven:pom文件详解
  13. 【74系列芯片的Verilog重现(一)】------74HC00
  14. 硬盘根目录里的Msdia80.dll文件是干什么用的
  15. macOS 安装postman 中文语言包
  16. 深度网络梯度爆炸的原因、产生的影响和解决方法(常用激活函数)
  17. 为什么程序员喜欢养猫?
  18. 汇编-栈帧-寄存器esp, ebp
  19. 【零基础学Python】海龟画图篇 :第十九节--海龟画图实际应用|用法总结
  20. RAID概念-磁盘阵列

热门文章

  1. OpenTracing 详解
  2. swift/dart代码规范检查工具介绍
  3. REMIX编译DeclarationError: Identifier already declared
  4. 微信小程序图片裁剪image-cropper插件使用
  5. php进行Markdown解析
  6. 15 | 网络优化(上):移动开发工程师必备的网络优化知识
  7. 面试题:看数字找规律
  8. 21天挑战赛第三文——多线程threading
  9. 修复计算机的英语怎么拼,电脑输入法不见了怎么恢复?手把手教你恢复电脑输入法的方法...
  10. 微信小程序收款手续费_为什么有人做的小程序交易手续费是0.38%而不是0.6%?