1

ねえ、python を使用して IP アドレスを DWORD に変換するにはどうすればよいですか?

しばらく検索しましたが、有用なものは見つかりませんでした。

ヘルパーに感謝します!

4

3 に答える 3

4

独自のソリューションを展開しないでください。ライブラリを使用しsocketます。

import socket
socket.inet_pton(socket.AF_INET, "127.0.0.1")

アドレスを適切に解析できない場合は例外がスローされます。独自のパーサーを作成することは、将来の問題のレシピにすぎません。

このようにすると、コードを IPv6 に移行するのも簡単になります。また、IPv6 用の独自のアドレス パーサーを作成することは、非常に悪い考えです。なぜなら、IPv6 アドレスは複雑で、いくつかの奇妙なコーナー ケースがあるからです。

編集:どうやら、これは Windows では機能しません。Windows で IPv6 アドレスを解析する方法はわかりませんが、IPv4 アドレスを解析できるライブラリ呼び出しがまだあります。独自のソリューションをロールバックする代わりに、存在しないsocket.inet_aton場合はそれを使用する必要があります。socket.inet_pton

于 2010-02-07T18:24:29.823 に答える
0

正しい IPv4 があると仮定すると、次のように実行できます。

import struct

ip = "192.168.2.101"
components = map(int, ip.split("."))
asLittleEndianDword = struct.pack("<I", (components[0] << 24) |
                                        (components[1] << 16) |
                                        (components[2] << 8) |
                                        components[3])
于 2010-02-07T17:48:37.087 に答える
-1

Python には DWORD タイプがありません。4 バイトの文字列として必要な場合は、次のように使用します。

struct.pack('bbbb', *(int(x) for x in '127.0.0.1'.split('.')))
于 2010-02-07T17:49:14.790 に答える