首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >打印MAC地址

打印MAC地址
EN

Stack Overflow用户
提问于 2018-07-11 13:24:38
回答 5查看 226关注 0票数 3

只是尝试使用string.Format()将系统MAC地址转换为文本格式。但它不起作用:

代码语言:javascript
复制
byte[] MacAddr = new byte[6];

// this works, but rather clumzy
mac = string.Format("{0:X2}-{1:X2}-{2:X2}-{3:X2}-{4:X2}-{5:X2}",            
          MacAddr[0], MacAddr[1], MacAddr[2], MacAddr[3], MacAddr[4], MacAddr[5]);

// give me index error
mac = string.Format("{0:X2}-{1:X2}-{2:X2}-{3:X2}-{4:X2}-{5:X2}", MacAddr);

Edit1:好的,我错了,但是看起来string.formatthis guy's casestring[]上工作。

我可以看到string.format有一个重载方法:Format(String, array<Object>[]()[])。有没有可能创建某种形式的byte[],作为这个array<Object>[]()[]

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2018-07-11 13:34:16

出现此错误的原因是,您希望设置6个项目的格式,但参数列表中只有1个项目

代码语言:javascript
复制
//6 parameters expected, only one "MacAddr" given
mac = string.Format("{0:X2}-{1:X2}-{2:X2}-{3:X2}-{4:X2}-{5:X2}", MacAddr); 

与你的工作方法相比,这里有一个更短的版本

代码语言:javascript
复制
mac = string.Join("-", MacAddr.Select(x => x.ToString("X2")));
票数 8
EN

Stack Overflow用户

发布于 2018-07-11 13:39:28

这是因为您指定了一个具有6个参数的格式,但只提供了一个:

代码语言:javascript
复制
//expected 6 parameters, provided only one
mac = string.Format("{0:X2}-{1:X2}-{2:X2}-{3:X2}-{4:X2}-{5:X2}", MacAddr); 

如果您使用的是C# 6.0,则还可以使用字符串插值:

代码语言:javascript
复制
 //string interpolation
    mac = $"{MacAddr[0]}:X2-{MacAddr[1]}:X2-{MacAddr[2]}:X2-{MacAddr[3]}:X2-{MacAddr[4]}:X2-{MacAddr[5]}:X2"; 
票数 0
EN

Stack Overflow用户

发布于 2018-07-11 13:42:43

您的string.Format()函数中只有一个参数,但根据需要它需要6个参数。您可以使用String.Join来获得更好的可读性-

代码语言:javascript
复制
mac = string.Join("-", MacAddr.Select(x => x.ToString(":X2")));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51277791

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档