2016-11-03 3 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로 값을 저장하면 endianness는 사용하는 조작에 관계없이 잠재적 인 관심사가됩니다.하지만이 값이 .NET 컨텍스트 내에서 계속 사용되면 문제가되지 않아야합니다. 걱정이된다면 IP 주소를 바이트 배열 (또는 심지어 문자열)로 저장하는 것이 더 나을 수도 있습니다. – Abion47

0
var address = IPAddress.NetworkToHostOrder((int)BitConverter.ToUInt32(IPAddress.Parse(ipAddress).GetAddressBytes(), 0)); 
관련 문제