在 c++ 中将uint8_t数组转换为字符串以在一行中打印
Convert array of uint8_t to string in c++ to print in one line
我的任务是在一行中打印一个uint8_t
数组,并使用给定的日志函数,即在一行中打印每条消息。所以,我想我必须合并字符串中的每个元素并打印。我尝试使用std::stringstream
uint8_t array[512];
std::stringstream ss;
for (int i = 0; i < array_len; i++)
{
ss << "0x" << std::hex << array[i] << ", ";
}
log_given_print("%s", ss.str().c_str()); // in fact you can replace by printf
它似乎效果很好。但是今天,我得到了奇怪的日志:
0xETX, 0xSOH, 0x%, 0xN, 0x
我 https://www.asciitable.com/检查了 ascii 表,发现它是一些字节,如 0x01、0x03。我认为问题%s
,通常,我使用%x
来打印数组的每个元素。
如何解决此问题?
使用格式化的输出运算符<<
时,它会将字符打印为字符。您需要将值转换为例如unsigned
能够打印其实际整数值:
ss << "0x" << std::hex << static_cast<unsigned>(array[i]) << ", ";
相关文章:
- 如何使代码打印文本文件中的第一行?
- 如何让字符数组在一行而不是多行中打印出来?
- 有时打印一行,有时打印三行
- 如何在同一行内打印和返回?
- 如何在循环中打印两个相邻的行,同时在 c++ 中将它们都保留在一行中
- 如何在c ++中以一行(水平)打印两个文件的数据?如给定的.这两种形式来自两个不同的文本文件
- 使用更改此变量的函数在同一行中打印引用变量
- 在 c++ 中将uint8_t数组转换为字符串以在一行中打印
- 是否可以让 Bitset 将位打印到一行?
- 如何避免在同一行上进行这种打印?
- C++控制台打印在同一行上,带回车符
- 如何在C++的一行上打印一定数量的值?
- 为什么仅在CSV文件中打印第一行
- c++ 在同一行上打印
- cout 用于仅打印最后一行的 2D 字符串矢量
- 打印一行 2D 字符数组 (C++)
- 如何将.txt文件中的多维数组放入代码中,并一次打印一行
- 打印一行星号
- 每隔n个字符打印一行换行符
- 当printf打印任意多的行时,freopen只打印一行(c++)