[问题] ofstream 总是写成binary file

楼主: evilkiss (evilkiss)   2024-11-05 19:03:28
Ofstream file;
file.open(“test.txt);
uint8_t data[size] = {0x01, 0x23, 0x45, 0x67, 0x89,
0xAB, 0xCD, 0xEF};
for(in i=0;i<size;i++)
file<<hex<<data[i]<<endl;
file.close()
然后档案开起来是乱码 用hex editor 开 里面资料正常
但我希望它是文字档的输出方式
请问我搞错什么地方了吗?
希望输出长下面那样
01
23
45
67
89
AB
CD
EF
作者: LPH66 (-6.2598534e+18f)   2024-11-05 19:19:00
你的 data 的型态是什么? 内容又是什么?啊, 你想输出那个字的十六进制码是吗?那改成 file << hex << (int)data[i](从你的话猜你的 data 应该是字串型态)
楼主: evilkiss (evilkiss)   2024-11-05 20:19:00
我已经转成 uint8_t 的array
作者: fenzhang (分帐)   2024-11-05 21:16:00
std::is_same<uint8_t, unsigned char>::value 在大部分平台都是true,所以你其实是把 unsigned char 印出来,另外对齐可能还要 setw 跟 setfill
楼主: evilkiss (evilkiss)   2024-11-06 09:50:00
感谢两位大大 解惑
作者: wulouise (在线上!=在电脑前)   2024-11-07 19:08:00
不懂你想印的text到底是hex representation还是真hex没有有编辑器把newline当换行的同时还能读\x01成"01"
作者: logravis (就酷阿)   2024-11-23 12:55:00
你的O应该是小写吧?
作者: suhorng ( )   2023-01-05 14:03:00
你要把 uint_8 转成 unsigned int
作者: wulouise (在线上!=在电脑前)   2023-01-08 22:00:00
喔我看懂了,你需要`+data[i]`, +会帮你promote type

Links booklink

Contact Us: admin [ a t ] ucptt.com