C++将字节二进制值转换为字符串

标签 c++

如何将表示 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/

相关文章:

c++ - 在 char 数组中查找不重复的字母。我的程序运行错误。需要帮忙

C++ 是否可以使用对变量的引用来简化这种嵌套循环模式?

c++ - 查找 C++ 容器中唯一的一个元素

java - 用于解决冲突的分组算法

c++ - 如何连接一个字符串和一个整数来生成文件名?

C++ 动态内存分配 VS 自动内存分配

c++ - 绘制财务数据

c++ - Linux下使用distutils交叉编译python扩展

c++ - Direct2D 中的多线程

c++ - 在 C++11 中移出 std priority_queue 的元素