JAVA - 将十进制MAC地址转换为十六进制MAC地址
JAVA - Convert decimal MAC address into hexadecimal MAC address
我想要一种将十进制格式 MAC 地址转换为十六进制格式的方法。
我在下面写了这个方法。你看到它有什么缺陷吗?应遵循任何编码实践?我在这里缺少什么吗?
public static void main(String[] args) {
String macDec = "76.177.205.33.164.80";
convertToHex(macDec);
System.out.println(macDec + " should be converted to 4CB1CD21A450");
}
private static void convertToHex(String macDec) {
String[] macs = macDec.split("\.");
String hexMac = null;
StringBuffer buff = new StringBuffer();
for(String mac : macs) {
hexMac = Integer.toHexString(Integer.valueOf(mac));
buff.append(hexMac.toUpperCase());
}
System.out.println(buff);
}
您正在使用 StringBuffer
(java 5 引入 StringBuilder
)。当您应该使用 Integer.parseInt
时,您却使用了 Integer.valueOf
。我更喜欢返回结果的方法——让调用者显示它。而且,假设您使用的是 Java 8+,您可以使用 map
进行流式传输和转换。喜欢,
private static String convertToHex(String macDec) {
return Arrays.stream(macDec.split("\."))
.map(mac -> Integer.toHexString(Integer.parseInt(mac)))
.collect(Collectors.joining()).toUpperCase();
}
我把toUpperCase()
移到了最后。使用您认为最容易阅读的版本。
我想要一种将十进制格式 MAC 地址转换为十六进制格式的方法。 我在下面写了这个方法。你看到它有什么缺陷吗?应遵循任何编码实践?我在这里缺少什么吗?
public static void main(String[] args) {
String macDec = "76.177.205.33.164.80";
convertToHex(macDec);
System.out.println(macDec + " should be converted to 4CB1CD21A450");
}
private static void convertToHex(String macDec) {
String[] macs = macDec.split("\.");
String hexMac = null;
StringBuffer buff = new StringBuffer();
for(String mac : macs) {
hexMac = Integer.toHexString(Integer.valueOf(mac));
buff.append(hexMac.toUpperCase());
}
System.out.println(buff);
}
您正在使用 StringBuffer
(java 5 引入 StringBuilder
)。当您应该使用 Integer.parseInt
时,您却使用了 Integer.valueOf
。我更喜欢返回结果的方法——让调用者显示它。而且,假设您使用的是 Java 8+,您可以使用 map
进行流式传输和转换。喜欢,
private static String convertToHex(String macDec) {
return Arrays.stream(macDec.split("\."))
.map(mac -> Integer.toHexString(Integer.parseInt(mac)))
.collect(Collectors.joining()).toUpperCase();
}
我把toUpperCase()
移到了最后。使用您认为最容易阅读的版本。