c++ 如何打印 字节流数据
时间: 2023-08-11 09:16:51 浏览: 119
在C++中,可以使用cout或printf打印字节流数据,但需要注意的是,字节流数据通常是以二进制形式存储的,如果直接使用cout或printf打印,可能会出现乱码或无法识别的情况。因此,需要将字节流数据转换为可识别的形式,例如16进制或ASCII码。
以下是一个使用cout输出字节流数据的示例代码:
```c++
char data[] = {0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x2c, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x21};
int len = sizeof(data) / sizeof(char);
for(int i=0; i<len; i++) {
cout << hex << (int)data[i] << " "; // 以16进制输出
}
cout << endl;
```
输出结果为:
```
48 65 6c 6c 6f 2c 20 77 6f 72 6c 64 21
```
这里使用了cout输出16进制形式的字节流数据。需要注意的是,使用cout输出16进制数据需要先设置输出格式为hex,否则会输出十进制数据。另外,也可以使用printf输出字节流数据,例如:
```c++
char data[] = {0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x2c, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x21};
int len = sizeof(data) / sizeof(char);
for(int i=0; i<len; i++) {
printf("%02x ", (unsigned char)data[i]); // 以16进制输出
}
printf("\n");
```
输出结果与上面相同。需要注意的是,使用printf输出16进制数据需要使用%02x格式化输出,其中%02表示每个字节占两位,不足两位时左侧补0,x表示以16进制输出。