将bytes数组转换为Hexadecimal String

时间:2017-02-25 01:41:57

标签: c++

这是我写的一个字节数组打印到十六进制字符串,但现在我想将它们保存为std :: string并稍后使用

这是我的代码

typedef std::vector<unsigned char> bytes;
void printBytes(const bytes &in)
{
    std::vector<unsigned char>::const_iterator from = in.begin();
    std::vector<unsigned char>::const_iterator to = in.end();
    for (; from != to; ++from) printf("%02X", *from);
}

我该怎么办?,我想在控制台窗口中将其保存为字符串而不是打印(显示)? 任何想法!

1 个答案:

答案 0 :(得分:2)

使用std::ostringstream

typedef std::vector<unsigned char> bytes;
std::string BytesToStr(const bytes &in)
{
    bytes::const_iterator from = in.cbegin();
    bytes::const_iterator to = in.cend();
    std::ostringstream oss;
    for (; from != to; ++from)
       oss << std::hex << std::setw(2) << std::setfill('0') << static_cast<int>(*from);
    return oss.str();
}