c++ - 从 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 循环来完成这项工作,但是如果有更简洁的方法可以做到这一点?
解决方案
如果您想玩得开心,可以使用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";
演示
推荐阅读
- macos - Xamarin Mac 启用沙盒
- sql - ORA-02270 外键,找不到故障
- html - Appcelerator Titanium:CSS 宽度不适用于百分比
- r - R Package无法访问“inst”文件夹中的内容
- ruby-on-rails - Rails:ActiveRecord where vs merge
- raspberry-pi - 覆盆子零上的Gammu
- java - Jboss EAP 7 - REST API 客户端的动态 SSL 身份验证
- python - 查找执行中的python程序的路径
- amazon-s3 - 无法从 EMR 上的 Flink 作业访问 S3
- bootstrap-4 - Bootstrap 的 Md 大小从分辨率 1200 像素开始