IPv4 地址轉換器

在 IPv4 的點分十進位制、32 位十進位制、十六進位制與二進位制之間互相轉換,並檢視其 in-addr.arpa 形式。

一個地址,多種表示。 在任意 IPv4 地址的點分十進位制、32 位整數、十六進位制與二進位制形式間切換,並顯示反向 DNS 的 in-addr.arpa 名稱。純數學運算,在瀏覽器內完成。

十進位制(uint32)
十六進位制
二進位制
in-addr.arpa

同一個地址的四種寫法

點分十進位制背後的 32 位

IPv4 地址本質上是一個 32 位無符號整數。我們熟悉的點分四段寫法只是一種顯示約定:192.168.1.1 是四個 8 位分段各自用十進位制書寫、再用點連線的結果,比它真實的數值 3232235777 好讀得多。本頁的每一種寫法都是同一個數字換了件衣服,因此互相轉換不會丟失任何資訊。

十進位制形式就是把這個整數完整寫出來。十六進位制形式把 32 位切成 8 個十六進位制數字,好處是每兩位正好對應一個位元組——0xC0A80101 可以乾淨地拆成 C0、A8、01、01。二進位制形式讓位元邊界變得可見,在推敲子網掩碼時正是你需要的視角。

各種寫法的實際用途

整數形式出現在需要低成本儲存和比較地址的場合。資料庫偏愛它,因為 INT UNSIGNED 的排序和範圍掃描比字串快得多,WHERE ip BETWEEN x AND y 可以直接走索引。日誌管道和 GeoIP 庫把地址段表示成整數對,也是同樣的原因。

十六進位制常見於抓包結果、核心資料結構和一些較老的配置格式。二進位制主要用於教學和排錯:把地址和掩碼按二進位制對齊排列,網路位與主機位的劃分就不再抽象。

反向 DNS 與 in-addr.arpa

正向 DNS 把域名解析為地址,反向 DNS 則相反。由於 DNS 的授權是從右往左逐級細化,而 IPv4 地址是從左往右逐級細化,兩者方向相反,所以octet 必須倒序書寫。192.168.1.1 對應 1.1.168.192.in-addr.arpa,該名稱下的 PTR 記錄給出主機名。郵件伺服器會例行檢查這一項——PTR 缺失或與正向記錄不一致,是正常郵件被判為垃圾郵件的常見原因。

開源說明:使用原生 JavaScript 實現,不依賴第三方庫。

常見問題

十進位制形式有什麼用?
它是把地址當作一個 32 位無符號整數來讀。資料庫、防火牆和 IP 歸屬地表常用這種形式儲存地址,因為整數區間比較的開銷極小。
為什麼 255.255.255.255 顯示為 4294967295?
因為轉換按無符號處理。把結果當作有符號 32 位整數的語言會把同一地址顯示為 -1,本工具始終給出無符號值。
in-addr.arpa 形式是什麼?
它是反向 DNS 查詢使用的域名。把各段順序顛倒再加上字尾即可,例如 192.168.1.1 對應 1.1.168.192.in-addr.arpa。
二進位制為什麼分成四組顯示?
每一組就是一個八位組。按點分組後可以一眼看出子網掩碼在哪一位切開地址,而這通常正是需要看二進位制的唯一原因。
支援 IPv6 嗎?
不支援,本轉換器僅處理 IPv4。IPv6 地址長 128 位,採用以冒號分段並支援 :: 壓縮的另一套文本表示法。
有資料被髮送到伺服器嗎?
沒有。轉換隻是純粹的算術運算,全部在瀏覽器內完成,你貼上的地址不會離開這個頁面。