这是一个从我的机器上获取Mac地址的示例,但我不明白sting.format函数的语法 这是示例。
public String getMACIdentifier(NetworkInterface network)
{
StringBuilder identifier = new StringBuilder();
try {
byte[] macBuffer = network.getHardwareAddress();
if (macBuffer != null) {
for (int i = 0; i < macBuffer.length; i++) {
identifier.append(
String.format("%02X%s",macBuffer[i],
(i < macBuffer.length - 1) ? "-" : ""));
}
} else {
return "---";
}
} catch (SocketException ex) {
ex.printStackTrace();
}
return identifier.toString();
}
答案 0 :(得分:2)
格式化的字符串是编程语言的常见功能。我会推荐reading up关于它们在Java中的工作方式。
在您的特定示例中,格式字符串"%02X%s"
将在字符串(由%02X
代表)旁边打印一个十六进制数字(由"%s"
代表)。十六进制数字将至少使用 2个字符打印;如果数字只能用一个字符表示,则空白处将用“ 0”字符“填充”。这被编码为"%02X"
。字符串字符将为"-"
或""
(空),具体取决于三元运算符(test ? true_value : false_value
)的结果。
答案 1 :(得分:0)
您尝试过吗?
public static void main(String[] args) {
StringBuilder identifier = new StringBuilder();
byte[] macBuffer = new byte[5];
macBuffer[0] = 0x10;
macBuffer[1] = 0x1;
macBuffer[2] = 0x02;
macBuffer[3] = 0x30;
for (int i = 0; i < macBuffer.length; i++) {
identifier.append(
String.format("%02X%s", macBuffer[i],
(i < macBuffer.length - 1) ? "-" : ""));
}
System.out.println(identifier.toString());
}
输出
10-01-02-30-00
"%02X%s"
%02X
是十六进制格式,02
是指最小字符数({0x1
打印为0x01
)%s
这是用于字符串格式