C# 将IPAddress保存为byte[]

小柊 发表于 2015年11月17日 23时09分20秒

各位看官好久不见,又是很久没有更新博客了,看了一下博客里上一篇文章也是两个多礼拜之前的事情了。其实最近小柊我又开始进入倦怠期了,一直拿不出什么干劲。

第一次在C#中,将一个IPAddress对象保存为byte[]数组这个问题出现在10月份,那时候从老师手里接过一个项目,由我负责网站主体的开发,由另外一位同学负责数据库的搭建。

等到那个同学跟我说数据库搭好了,我准备进行网站建设的时候,突然发现他搭的数据库简直没法用。数据库的表名、字段名全是拼音,这也罢了,居然还有两个地方还按错了;数据库存放字符串的字段,有的用的是nchar,有的用的是nvchar,有些地方的字符串长度还设置的特别小,经常导致Entity Framework抛出“对一个对象或多个实体验证失败”的异常。最后一个让我深表蛋疼的问题就是他不知从哪里查来,在大公司里,在数据库里存放IP地址是使用varbinary储存的。这个varbinary在EF框架Model First里是直接被视为一个byte[]数组。这个项目主要就也只是一个演示用,功能能用就行,但这个项目非常的急,所以当时希望一切从简的我认为存放IP字段只要用nvchar存放就行了,现在最重要的是程序实现。但最后因为种种考虑,直接在数据库里修改字段类型是没法子了,也只有硬上了。

1.我的解决方案

我的解决方案里,还是比较蠢的将IPAddress转化为字符串,然后再用Split方法切割后进行每个单元的byte转化。这种方法非常局限,反正我估计是没办法处理存放着IP v6的IPAddress对象。

 

2.更优的解决方案

就在刚刚!我突然发现其实IPAddress类有一个GetAddressBytes方法!这个方法完美解决IPAddress类型转byte[]数组的问题(只怪自己当时太蠢)

 

 

以上就是本文的所有内容,恳请各位看官批评指正!

 

小柊

2015年11月17日 23:04:32

相关文章

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注