Search code examples
arraysvb.netbyteip-addressmac-address

Convert Mac Address and IP Address to byte araay of specific size


I'm Trying to convert a mac address to a byte array of size 5 and an IP address to a size of 4. Now i know how to retrieve the values with this code:

'This returns a byte array of size 16
Dim ipArray As Byte() = Dns.GetHostEntry(Dns.GetHostName()).AddressList.Where(Function(a As IPAddress) Not a.IsIPv6LinkLocal AndAlso Not a.IsIPv6Multicast AndAlso Not a.IsIPv6SiteLocal).First().GetAddressBytes

'This returns a byte array of size 6
Dim macArray As Byte() = NetworkInterface.GetAllNetworkInterfaces(0).GetPhysicalAddress.GetAddressBytes

This doesn't give me the result i want and couldn't find a good solution to work with. For the IP i created a workaround i find dirty:

Dim ip As String = "192.168.0.10"
Dim _ip() As String = ip.Split(CChar("."))
Object.IpAddress = New Byte() {Byte.Parse(_ip(0)), Byte.Parse(_ip(1)), Byte.Parse(_ip(2)), Byte.Parse(_ip(3))}

Solution

  • Try:

    Dim ipArray As Byte() = Dns.GetHostEntry(Dns.GetHostName()).AddressList.Where(Function(a As IPAddress) a.AddressFamily =2).First().GetAddressBytes