2
A
回答
4
你可能需要六个字节序列像这样格式化:
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();
如果你非常想这样做了石膏般的风格(从您的标题在这里猜测),你可以创建一个MAC类中,实现ostream的运营商为它(像我的代码)并使用boost::lexical_cast
。
1
- 确保它是空值终止
- 你需要知道什么编码字符串。如果它是ASCII,一个简单的std :: string STR((字符*)your_buffer ) 会做。 your_buffer应该是一个无符号的字符。如果不是,我们需要更多信息。
3
不确定是否表示转换或转换。如果转换,那么它取决于你想要的形式。你可能想要Hex,base-64,octal,...
如果你想要十六进制,请考虑STLSoft的format_bytes()
函数,它可以进行各种排序和分组。
如果您想要base-64,请考虑b64 library。
HTH
[编辑]与在OP编辑行,全面实现了一套将是:
#include <stlsoft/conversion/byte_format_functions.hpp>
#include <stdio.h>
int main()
{
unsigned char mac[6];
char result[STLSOFT_NUM_ELEMENTS(mac) * 3];
stlsoft::format_bytes(mac, sizeof(mac), &result[0], STLSOFT_NUM_ELEMENTS(result), 1, ":");
puts(result);
return 0;
}
没有必要在这种情况下从format_bytes()
检查返回值,因为你传入了足够的写入缓冲区。在实际情况下,你要检查
相关问题
- 1. 将字节转换为c中的二进制字符串#
- 2. 将二进制转换为字符串
- 3. 将二进制字符串表示转换为字节数组
- 4. Go - 如何将二进制字符串转换为二进制字节?
- 5. 将二进制字符串转换为十进制c字符串#
- 6. 将二进制长字符串转换为十六进制c#
- 7. 将ascii字符十进制值的字符串转换为二进制值
- 8. 将十六进制字符串转换为C++中的字节
- 9. 将二进制字符串转换为文本字符串
- 10. 将包含字符串的[]字节转换为十进制值
- 11. Python将二进制字符串转换为二进制int
- 12. 将字节转换为二进制
- 13. MD5二进制字符串转换为字节数组
- 14. 转换字符串“s”为二进制
- 15. 如何将二进制转换为字符或字符串?,Java
- 16. 将十六进制字符串转换为32位二进制字符串
- 17. 将十六进制字符串转换为二进制字符串
- 18. 将SQL二进制数据转换为C#中的字符串
- 19. 将C字符串转换为二进制表示
- 20. Swift3将字符串值转换为十六进制字符串
- 21. 如何将NSInteger或NSString转换为二进制(字符串)值
- 22. Swift - 将二进制字符串转换为ASCII值
- 23. 将字符串转换二进制为10进制
- 24. 从字节数组转换为字符串十六进制c#
- 25. C# - 字节数组转换为十六进制字符串
- 26. C#将字节数组与字符串转换为字符串
- 27. 将十六进制字符串转换为Java中的字节
- 28. 将字节值存储在字符串中?将字节转换为字符串?
- 29. ASP Classic - 将base64二进制字符串转换为字节数组
- 30. 将字节[]转换为二进制的字符串表示形式
你想在结果字符串中做什么?你想要一个字节的文本表示(例如十六进制)还是你想实际将6个字节解释为ASCII(或其他编码)? – Joe 2009-06-26 22:54:35
我正在寻找文本表示,所以是十六进制。 – aHunter 2009-06-26 22:58:15
或者它是一个48位数字?如果是这样,它是什么编码,什么是排序? – patros 2009-06-26 22:58:18