[問題] ofstream 總是寫成binary file

看板C_and_CPP (C/C++)作者 (evilkiss)時間2周前 (2024/11/05 19:03), 2周前編輯推噓3(308)
留言11則, 4人參與, 2周前最新討論串1/1
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://www.ptt.cc/bbs/C_and_CPP/M.1730804610.A.A11.html

11/05 19:19, 2周前 , 1F
你的 data 的型態是什麼? 內容又是什麼?
11/05 19:19, 1F

11/05 19:19, 2周前 , 2F
啊, 你想輸出那個字的十六進位碼是嗎?
11/05 19:19, 2F

11/05 19:20, 2周前 , 3F
那改成 file << hex << (int)data[i]
11/05 19:20, 3F

11/05 19:20, 2周前 , 4F
(從你的話猜你的 data 應該是字串型態)
11/05 19:20, 4F

11/05 20:19, 2周前 , 5F
我已經轉成 uint8_t 的array
11/05 20:19, 5F
※ 編輯: evilkiss (42.79.189.230 臺灣), 11/05/2024 20:25:26 ※ 編輯: evilkiss (42.79.189.230 臺灣), 11/05/2024 20:27:10

11/05 21:16, 2周前 , 6F
std::is_same<uint8_t, unsigned char>::value 在大部
11/05 21:16, 6F

11/05 21:16, 2周前 , 7F
分平台都是true,所以你其實是把 unsigned char 印出來
11/05 21:16, 7F

11/05 21:16, 2周前 , 8F
,另外對齊可能還要 setw 跟 setfill
11/05 21:16, 8F

11/06 09:50, 2周前 , 9F
感謝兩位大大 解惑
11/06 09:50, 9F

11/07 19:08, 2周前 , 10F
不懂你想印的text到底是hex representation還是真hex
11/07 19:08, 10F

11/07 19:09, 2周前 , 11F
沒有有編輯器把newline當換行的同時還能讀\x01成"01"
11/07 19:09, 11F
文章代碼(AID): #1dAVk2eH (C_and_CPP)
文章代碼(AID): #1dAVk2eH (C_and_CPP)