作者evilkiss (evilkiss)
看板C_and_CPP
标题[问题] ofstream 总是写成binary file
时间Tue Nov 5 19:03:28 2024
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
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 42.79.189.230 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1730804610.A.A11.html
1F:推 LPH66: 你的 data 的型态是什麽? 内容又是什麽?11/05 19:19
2F:→ LPH66: 啊, 你想输出那个字的十六进位码是吗?11/05 19:19
3F:→ LPH66: 那改成 file << hex << (int)data[i]11/05 19:20
4F:→ LPH66: (从你的话猜你的 data 应该是字串型态)11/05 19:20
5F:→ evilkiss: 我已经转成 uint8_t 的array11/05 20:19
※ 编辑: evilkiss (42.79.189.230 台湾), 11/05/2024 20:25:26
※ 编辑: evilkiss (42.79.189.230 台湾), 11/05/2024 20:27:10
6F:推 fenzhang: std::is_same<uint8_t, unsigned char>::value 在大部 11/05 21:16
7F:→ fenzhang: 分平台都是true,所以你其实是把 unsigned char 印出来 11/05 21:16
8F:→ fenzhang: ,另外对齐可能还要 setw 跟 setfill 11/05 21:16
9F:→ evilkiss: 感谢两位大大 解惑 11/06 09:50
10F:推 wulouise: 不懂你想印的text到底是hex representation还是真hex 11/07 19:08
11F:→ wulouise: 没有有编辑器把newline当换行的同时还能读\x01成"01" 11/07 19:09
12F:推 logravis: 你的O应该是小写吧? 11/23 12:55
13F:推 suhorng: 你要把 uint_8 转成 unsigned int 01/05 14:03
14F:推 wulouise: 喔我看懂了,你需要`+data[i]`, +会帮你promote type 01/08 22:00