从 std::数组创建十六进制代表
Creating a hex representative from a std::array
我有一个std::array
,我想通过将每个字节转换为其相等的十六进制值来创建一个字符串,如下所示:
string getString(array<unsigned char, 10> data)
{
// what is the faster way to do this?
}
main()
{
array<unsigned char, 10> data={0,1,2,3,4,5,6,7,8,9};
string result=getString(data);
out<<result<<endl;
}
它应该打印如下内容:
0x00 0x01 0x02 0x03
甚至
00010203040506070809
任何更快的方式。
我知道我可以使用 for 循环来完成这项工作,但是是否有更整洁的方法可以做到这一点?
你可以做如下的事情
string getString(array<unsigned char, 10> data)
{
std::stringstream ss;
ss << std::hex << std::setfill('0');
for(int i=0; i<data.size(); ++i)
ss << std::setw(2) << (int)data[i];
return ss.str();
}
如果你想找点乐子,你可以使用std::ostream_iterator
:
template<class Container>
std::string hex(Container const& c)
{
std::stringstream out;
std::copy(begin(c), end(c), std::ostream_iterator<unsigned int>(out << std::hex, " "));
return out.str();
}
用法
std::cout << hex(array) << "n";
演示
http://coliru.stacked-crooked.com/a/9bc542742b1566e2
相关文章:
- 将字符串转换为十六进制数组c++
- 如何使系统在十六进制数之前打印 0x,在八进制数之前打印 0?
- 将大十六进制数转换为十进制形式(以 10 为基数的形式)的算法
- 为什么将字符串输出到未命名的 std::ofstream 反而给了我一个十六进制数?
- 使用无符号字符数组输入十六进制数
- 将十六进制数作为主要函数参数
- 钻头和转移操作数以清除选定的十六进制数
- 在C/C++中将十六进制数组作为字符串写入文件
- 十六进制数组 cout 到文本文件失败
- 将十六进制数转换为布尔数组
- 在 C++,(C) 中更改十六进制数的前导零位
- 将十六进制数的 char[] 转换为对应于 ASCII 表中十六进制数字的字母的 char[] 并反转
- 如何获取十六进制数的最后 n 位数字
- 将char数组转换为十六进制数组(C++)
- 从几个十进制数中绘制一个十六进制数
- 如何使用十六进制数初始化字符数组
- 从十六进制数组读取 Int
- 从十六进制数组读取双精度到向量
- ~十六进制数前的符号
- c++十六进制数组附加字符