看板 C_and_CPP 關於我們 聯絡資訊
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
LPH66: 你的 data 的型態是什麼? 內容又是什麼?11/05 19:19
LPH66: 啊, 你想輸出那個字的十六進位碼是嗎?11/05 19:19
LPH66: 那改成 file << hex << (int)data[i]11/05 19:20
LPH66: (從你的話猜你的 data 應該是字串型態)11/05 19:20
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
fenzhang: std::is_same<uint8_t, unsigned char>::value 在大部 11/05 21:16
fenzhang: 分平台都是true,所以你其實是把 unsigned char 印出來 11/05 21:16
fenzhang: ,另外對齊可能還要 setw 跟 setfill 11/05 21:16
evilkiss: 感謝兩位大大 解惑 11/06 09:50
wulouise: 不懂你想印的text到底是hex representation還是真hex 11/07 19:08
wulouise: 沒有有編輯器把newline當換行的同時還能讀\x01成"01" 11/07 19:09
logravis: 你的O應該是小寫吧? 11/23 12:55
suhorng: 你要把 uint_8 轉成 unsigned int 01/05 14:03
wulouise: 喔我看懂了,你需要`+data[i]`, +會幫你promote type 01/08 22:00