2017-04-24 28 views
-2

IPアドレスをバイナリ(16)文字列に変換する方法を知る必要があります。私はこれをMySqlデータベースで使用する必要がありますが、変換はSQLステートメント/クエリである必要はありません。IPアドレスをバイナリ(16)文字列に変換するにはどうすればよいですか?

+4

"または他の文字列"? –

+0

なぜバイナリ文字列としてアドレスを格納したいのですか?これらは検索や対処がはるかに難しく、スペース節減はそれほど価値がないので、それほど重要ではありません。 MySQLはバイナリ形式のIPアドレスを扱うことができません。 Postgresのような他のデータベースには、強固なサポートを持っているネイティブIPカラム型があります。 – tadman

+0

私はこのフィールドを持つMySqlテーブルを持っており、手動でIPの値を挿入したいと思っています。私は設計していないし、それを変更することはできません - 私はちょうどバイナリ(16)文字列に変換されたIP文字列が必要です。 – asknomore

答えて

-2

IPv4アドレスには、メモリ内で最小4バイト(32ビット)が必要です。したがって、2bytesのスペースにアドレスを格納する場合は、サブネットとネットマスクが255.255.x.xまたは255.255.255.xの組織であれば可能です。ここでは、ホスト部分をデータベースに格納します。

たとえば10.80.100.26ネットマスク255.255.255.0次にデータベースに26を格納します。

私はそれがあなたを助けてくれることを願っています。

ありがとう

+2

IPv4アドレスは*正確に* 4バイト必要です。単一のCIDRサブネットに沿って分割されている組織はごくわずかですが、複数の完全に無関係なサブネットが一般的です。ホストを格納するだけでは、問題の世界を求めています。 – tadman

+0

そうです。しかし彼の限界と、彼が運が良ければ(シングルCIDRサブネット)、彼はこの方法で2バイトで保存することができます。 –

+0

その提案は間違っているだけです。誰もこれを正当な理由でしません。それはまったくばかげている。 2バイトを節約し、大きな混乱を加えることは本当にひどいトレードオフです。 – tadman

関連する問題