Я использую этот код, чтобы найти MAC-адрес машины. Этот код печатает непосредственно MAC-адрес, но я хочу вернуть его как строку. Я совершенно смущен.Форматирование массива байтов MAC-адресов для строки
помогите пожалуйста.
try {
InetAddress add = InetAddress.getByName("10.123.96.102");
NetworkInterface ni1 = NetworkInterface.getByInetAddress(add);
if (ni1 != null) {
byte[] mac1 = ni1.getHardwareAddress();
if (mac1 != null) {
for (int k = 0; k < mac1.length; k++) {
System.out.format("%02X%s", mac1[k], (k < mac1.length - 1) ? "-" : "");
}
} else {
System.out.println("Address doesn't exist ");
}
System.out.println();
} else {
System.out.println("address is not found.");
}
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (SocketException e) {
e.printStackTrace();
}
Если вам нужно вернуть строку, отформатированную таким же образом, используйте StringBuilder и добавьте ее в части цикла, форматированные с помощью String.format (..). –
См. Http://stackoverflow.com/questions/311165/how-do-you-convert-byte-array-to-hexadecimal-string-and-vice-versa-in-c/632920#632920 – Zaki