IP位址如何在資料庫裡面的儲存

2021-10-08 09:52:08 字數 1267 閱讀 4693

比較傳統儲存ip位址的方法是採用varchar(15),但是這種方法需要占用15個位元組空間,那麼有沒有更加節省空間的做法麼?答案就是用int儲存。採用int儲存有2種處理方式。

方法一、利用資料庫函式進行處理。以mysql為例可以採用inet_aton,inet_ntoa函式進行轉換。

# inet_ntoa函式將ip位址轉換int型別。

mysql> select inet_aton(

'192.168.0.1');

+--------------------------+

| inet_aton(

'192.168.0.1')|

+--------------------------+

| 3232235521 |

+--------------------------+

1 row in

set(0.00 sec)

#inet_aton函式將int型別轉換為ip位址

mysql> select inet_ntoa(3232235521)

; +-----------------------+

| inet_ntoa(3232235521)

|+-----------------------+

| 192.168.0.1 |

+-----------------------+

1 row in

set(0.00 sec)

方法

二、利用開發語言的函式進行處理,以python進行舉例。可以採用socket,struct依賴進行轉換

#引入依賴

>>

>

import socket

>>

>

import struct

>>

> int_ip =

123456789

#int型別轉ip位址

>>

> ip = socket.inet_ntoa(struct.pack(

'i',socket.htonl(int_ip)))

'7.91.205.21'

##ip位址轉int型別

>>

> socket.ntohl(struct.unpack(

"i",socket.inet_aton(

str(ip)))

[0])

123456789

IP位址在資料庫裡面的儲存方式

大多數公司的表結構都需要經過dba進行審核,有時候你會看到儲存ip位址採用varchar 15 這種方式都是傳統的做法,這種方法需要占用15個位元組,那麼有更省空間的做法麼?肯定是有的,那就是用int儲存。如果採用int儲存這裡又有2種處理方式。1.利用mysql函式進行處理。可以採用inet at...

在windows裡面的資料庫裡面存emoji表情

1,把連線資料庫的unicdoe utf 8給去掉,那個url 2,關閉mysql的服務,修改my.ini 具體如下 default character set utf8mb4 character set server utf8mb4 collation server utf8mb4 unicode...

讀取資料庫裡面的值出現亂碼

eeclipse裡的中文都是亂碼,包括注釋,但資料庫裡面的資訊可以顯示中文,從資料庫裡面讀取值的時候出現亂碼,需要改兩個地方 1.在eeclipse裡面,開啟properties resource text file encoding,選第乙個選項 不是other 2.還是在eeclipse裡面,開...