2016-11-03 4 views
0

私はv4のIPアドレスを持っています。私はそれをUInt32に変換する必要があります。IPアドレスを.NET CoreのUInt32/UInt64に変換する

string address = "192.168.1.1"; 
long intAddress = (long)(uint)IPAddress.NetworkToHostOrder((int)IPAddress.Parse(address).Address); 

をしかしIPAddress.Addressは、.NETのコアでは使用できません。通常の.NETで 、私が使っていました。 置き換えは何ですか?

+0

私はUInt32型の形式のIPアドレスを持っているテーブルに対してアドレスをジオコーディングしていますので。 – user1054922

+0

@Quantic IPv4は4バイトとして保存されます。 'uint'は4バイトとして格納されます。私は狂ったと呼んでいますが、まっすぐ進む転換があると思います。 – Abion47

+0

@ Abion47 dang私はちょうど今、悪いコメントでいっぱいです、あなたは正しいです。 – Quantic

答えて

3

利用もGetAddressBytes

var intAddress = BitConverter.ToInt32(IPAddress.Parse(address).GetAddressBytes(), 0);

How to convert an IPv4 address into a integer in C#?

+0

この方法でビッグエンディアン/リトルエンディアン環境について心配する必要はありますか? – user1054922

+1

私はそうは思わない。プラットフォームに依存しないように見える(https://github.com/dotnet/corefx/blob/93bde6d2b0cc0797ffb0dca470836ac7f86f876d/src/System.Net.Primitives/src/System/Net/IPAddress.cs#L222-L246) –

+1

Ifあなたは値を 'UInt32'として保存していますが、エンディアンは使用している操作に関係なく潜在的な問題になりますが、この値が常に.NETのコンテキスト内で使用されていれば問題になることはありません。あなたがそれを心配しているのであれば、IPアドレスをバイト配列(または単なる文字列)として保存する方が良いかもしれません。 – Abion47

0
var address = IPAddress.NetworkToHostOrder((int)BitConverter.ToUInt32(IPAddress.Parse(ipAddress).GetAddressBytes(), 0)); 
関連する問題