2017-04-24 183 views
-2

我需要知道如何將IP地址轉換爲二進制(16)字符串。我需要這個在MySql數據庫中使用,但轉換不需要是sql語句/查詢。如何將IP地址轉換爲二進制(16)字符串?

+4

「或任何其他字符串」? –

+0

你爲什麼要將地址存儲爲二進制字符串?這些搜索和處理起來要困難得多,節省的空間太小,實在不值得。 MySQL不能處理二進制形式的IP地址,它們只是數據而已。請記住像Postgres這樣的其他數據庫具有強大支持的本地IP列類型。 – tadman

+0

我有這個字段的MySql表,我想手動插入一個IP值到它。我沒有設計,也不能改變它的方式 - 我只需要將IP字符串轉換爲二進制(16)字符串。 – asknomore

回答

-2

IPv4地址在內存中需要最少4個字節(32位)。因此,如果您希望將地址存儲在2字節的空間中,那麼如果您的組織具有子網且網絡掩碼爲255.255.x.x或255.255.255.x,則可以使用它。在這只是將主機部分存儲在數據庫中。

eg 10.80.100.26 netmask 255.255.255.0然後只在你的數據庫中存儲26。

我希望它能幫助你。

謝謝

+2

IPv4地址需要*正好*四個字節。很少有組織會沿着一個CIDR子網劃分,很常見的是,您將擁有多個完全不相關的組織。只存儲主機正在尋求一個麻煩的世界。 – tadman

+0

那是對的。但鑑於他的限制,如果他很幸運(Single CIDR subnet),那麼他可以用這種方式存儲2個字節。 –

+0

這個建議顯然是錯誤的。沒有人會這樣做,並有充分的理由。這是完全荒謬的。保存兩個字節並增加大量混淆是非常可怕的折衷。 – tadman

相關問題