我想要一种将十进制格式的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.valueOf
时使用的是Integer.parseInt
。我希望有一种返回结果的方法-让调用者显示它。并且,假设您使用的是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()
。使用您认为最容易阅读的版本。