Как преобразовать Mac-адрес в шестнадцатеричный и передать его в bytearray в java

Как я могу преобразовать MacAddress в Hex String и затем проанализировать его на байт в java? и аналогичным образом IP-адрес?

спасибо

MAC-адрес уже находится в шестнадцатеричном формате, он имеет 6 пар из 2 шестнадцатеричных цифр.

String macAddress = "AA:BB:CC:DD:EE:FF"; String[] macAddressParts = macAddress.split(":"); // convert hex string to byte values Byte[] macAddressBytes = new Byte[6]; for(int i=0; i<6; i++){ Integer hex = Integer.parseInt(macAddressParts[i], 16); macAddressBytes[i] = hex.byteValue(); } 

А также...

 String ipAddress = "192.168.1.1"; String[] ipAddressParts = ipAddress.split("\\."); // convert int string to byte values Byte[] ipAddressBytes = new Byte[4]; for(int i=0; i<4; i++){ Integer integer = Integer.parseInt(ipAddressParts[i]); ipAddressBytes[i] = integer.byteValue(); } 

Библиотека Java IPAddress с открытым исходным кодом будет анализировать как MAC-адреса, так и IP-адреса и преобразовывать их в байты полиморфным образом. Отказ от ответственности: Я руководитель проекта этой библиотеки.

Следующий код будет выполнять то, что вы запрашиваете:

  String ipv4Addr = "1.2.3.4"; String ipv6Addr = "aaaa:bbbb:cccc:dddd::"; String macAddr = "a:b:c:d:e:f"; try { HostIdentifierString addressStrings[] = { new IPAddressString(ipv4Addr), new IPAddressString(ipv6Addr), new MACAddressString(macAddr) }; Address addresses[] = new Address[addressStrings.length]; for(int i = 0; i < addressStrings.length; i++) { addresses[i] = addressStrings[i].toAddress();//parse } for(Address addr : addresses) { byte bytes[] = addr.getBytes(); //convert to a list of positive Integer for printing List forPrinting = IntStream.range(0, bytes.length).map(idx -> 0xff & bytes[idx]).boxed().collect(Collectors.toList()); System.out.println("bytes for " + addr + " are " + forPrinting); } } catch(HostIdentifierException | IOException e) { //e.getMessage has validation error } 

вывод:

  bytes for 1.2.3.4 are [1, 2, 3, 4] bytes for aaaa:bbbb:cccc:dddd:: are [170, 170, 187, 187, 204, 204, 221, 221, 0, 0, 0, 0, 0, 0, 0, 0] bytes for 0a:0b:0c:0d:0e:0f are [10, 11, 12, 13, 14, 15]