如何将表示 MAC 地址的 6 个字节转换为将地址显示为以冒号分隔的十六进制值的字符串?
谢谢
最佳答案
您可能希望像这样格式化一个包含六个字节的序列:
aa:bb:cc:dd:ee:ff
其中 aa
是十六进制格式的第一个字节。
应该这样做:
char MAC[6]; //< I am assuming this has real content
std::ostringstream ss;
for (int i=0; i<6; ++i) {
if (i != 0) ss << ':';
ss.width(2); //< Use two chars for each byte
ss.fill('0'); //< Fill up with '0' if the number is only one hexadecimal digit
ss << std::hex << (int)(MAC[i]);
}
return ss.str();
如果您非常想以类似 cast 的方式执行此操作(从此处的标题猜测),您可以创建一个 MAC 类,为其实现 ostream-operator(如我给定的代码)并使用 boost::lexical_cast
.
关于C++将字节二进制值转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1051618/