,在java中,数据库中存储的ip是varbinary类型,读出来不能正常显示,如何读出并正常显示

,在java中,数据库中存储的ip是varbinary类型,读出来不能正常显示,如何读出并正常显示,第1张

数据库中的varbinary 类型 对应到java里面是byte类型, 直接打印出来是内存地址。

所以 new一个String 把拿到的对象放进去。即首先使用byte[]进行接收,接收完成以后使用

new String((byte[]) xxx )获取为String

分类: 电脑/网络 >>程序设计 >>其他编程语言

问题描述:

我下载了一个IP数据库,但是发现格式如下:

id ip1 ip2 addr

7559 *********** *********** 浙江省嘉兴市 桐乡

请问ip1和ip2分别怎么换算成xxx.xxx.xxx.xxx这样的格式?

解析:

关于IP到Dword的转换:

在这里,我们运用WINDOWS自带的计数器,并开启它的科学计算功能,以211,91,216,106到***********为例,先分别将十进制的206,169,40,2转换成十六进制的d3,5b,d8,6a,再将d3,5b,d8,6a以十六进制的双字节的形式写如计数器,再转换成十进制,就可以得到***********.事实上,在平常运用中,我们常用的方法是这样的:

211 x *********** = ***********

91 x 65536 = 5963776

216 x 256 = 55296

+ 106 x 1 = 106

--------------------------------

***********

与IP的256倍数叠加一致,***********也可以以***********的倍数叠加!

关于IP与八进制及十六进制的转换:

虽然已经知道了Dword的转换,但是还远远不够,因为IP同样可以被转换成八进制和十六进制!对于八进制,我们仅仅只要将各段IP分别转换成八进制,然后再在各段IP前加上一个"0(零)"即可,如211,91,216,106被转换成0323,0133,0330.0152.对于十六进制,如八进制的转换,在这里,不同的仅仅是在开头处加上"0(零)x",成为0xd3.0x5b.0xd8.0x6a,而且此处小数点是可以省略的而成为0xd35bd86a,而且与上述的倍数叠加原理相同.

讲了这么多,归纳起来,有以下几种方式访问ttian/index

user:pwd@***********/index --可加上***********的整数倍

user:pwd@0323.0133.0330.0152/index --各字段前可加数个"0"

user:pwd@0xd3.0x5b.0xd8.0x6a/index

user:pwd@0xd35bd86a/index --可在"0x"后加上任意字符


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6422866.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-21
下一篇 2023-03-21

发表评论

登录后才能评论

评论列表(0条)

保存