JAVA-将十进制MAC地址转换为十六进制MAC地址

问题描述 投票:0回答:1

我想要一种将十进制格式的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);
}
java hex decimal mac-address converters
1个回答
2
投票

您正在使用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()。使用您认为最容易阅读的版本。

© www.soinside.com 2019 - 2024. All rights reserved.