[請問] 有高效率將大量中文字串轉成HEX的軟

作者: shala (沙羅)   2019-01-16 14:42:26
我有一些文字檔,裡面都是中文字
每個檔案大約都有100萬行
想要把內容全部轉成UNICODE的HEX
例如「中」變成「4E2D」
這個轉換不困難,但行數高達100萬行左右
是否有每個檔案能在10秒內完成轉換的高效率程式?
作者: spfy (spfy)   2019-01-16 15:19:00
10s連檔案都還沒讀完吧?
作者: kobe8112 (小B)   2019-01-16 15:34:00
轉換完放在RAM跟還要存到硬碟內也不一樣不對啊,你文字檔原始的編碼格式是啥?
作者: enthos (影斯作業系統)   2019-01-16 15:56:00
www.di-mgt.com.au/hexdump-for-windows.html
作者: kobe8112 (小B)   2019-01-16 17:09:00
你是要給人看而不是程式要使用的話,notepad++就有HEX-EDITOR這個外掛模組了,或者使用UltraEdit這類編輯器應該說所有文字編輯器,支援HEX MODE都可以用給其他程式用,不需要轉啊,程式只要可以讀檔案,直接開檔起來不就是你要的答案了?QQ
作者: rick65134   2019-01-16 19:12:00
感覺就是其他程式不是原PO開發的 且只吃HEX自己寫程式最快啦 這麼單一又大量的功能 值得寫程式
作者: kobe8112 (小B)   2019-01-16 19:40:00
還是不太了解,我從文意推測你是用Windows,假設今天你開了一個記事本,輸入「中」後存檔,編碼選unicode,實際儲存的資料就是4Bytes: 0xFF 0xFE 0x2D 0x4E那你希望的這個程式,轉換完以後檔案的raw data是啥呢?Hex: FF FE 34 00 45 00 32 00 44 00 共10Bytes?
作者: rick65134   2019-01-16 20:14:00
每行100中文字 一百萬行 python3.7+ramdisk 40秒
作者: kobe8112 (小B)   2019-01-16 20:32:00
所以4E2D存檔要用什麼編碼?一樣Windows上所謂的unicode(UCS-2-LE)嗎?還是需要再轉其他編碼?這會影響速度能不能傳個範例檔來測試測試XD
作者: rick65134   2019-01-16 21:15:00
你有python3嗎?
作者: kobe8112 (小B)   2019-01-16 21:32:00
扣除BOM,檔案大小應該會變4倍所以你要餵的那個程式,確定可以吃多種編碼格式?你的需求,轉換後若用UTF-8,撇開Windows會加BOM來看,跟用ASCII編碼是一樣的大小,也與來源檔大小相同
作者: xvid (DivX)   2019-01-17 10:41:00
未實測速度 Akelpad + HexSel plugin剛實測一下有點lag
作者: netio (新中間選民)   2019-01-17 20:18:00
試下我寫的 測試30MB文字檔(Unicode)不含讀寫約1秒左右http://tinyurl.com/y9c8t6v2在命令列模式下使用
作者: kobe8112 (小B)   2019-01-18 09:07:00
你同一個檔案編碼方式不一致,軟體根本無從判斷啊
作者: netio (新中間選民)   2019-01-18 11:55:00
用查表法應該是最快了 事先會吃1G的記憶体 理論上可支持500MB的文字檔http://tinyurl.com/ya4gsoxf斷行符號會影響一點點效率
作者: kobe8112 (小B)   2019-01-18 12:52:00
Mapping table只需要一個型別uint16_t 大小256的陣列吧?然後前面講錯,依原PO需求的UCS-2轉UTF-8大小變2倍才對
作者: netio (新中間選民)   2019-01-18 16:09:00
是256沒錯 另增加字元順序選項http://tinyurl.com/yaaakywe
作者: rick65134   2019-01-18 16:24:00
效率提升的問題應該是因為python本身就不是讓你拚速度
作者: kobe8112 (小B)   2019-01-18 17:05:00
UTF-8沒有BE LE的區別耶...
作者: netio (新中間選民)   2019-01-18 17:42:00
內定就是不轉換了 還是你要多個選項?不支持Utf8喔
作者: Bencrie   2019-01-20 23:39:00
你是要存成 source code 喔?vim 的 xxd -i

Links booklink

Contact Us: admin [ a t ] ucptt.com