亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

兩字節字符的文件查找

兩字節字符的文件查找

Go
ITMISS 2021-04-08 17:15:03
我正在編寫小型日志解析器,該解析器應該在文件中找到一些標簽。文件很大(512mb),具有以下結構:[2018.07.10 00:30:03:125] VersionInfo\886...some data...[2018.07.10 00:30:03:109][TraceID: 8HRWSI105YVO91]->IncomingTime\16...some data...[2018.07.10 00:30:03:109][TraceID: 8HRWSI105YVO91]->IncomingData\397...some data...[2018.07.10 00:30:03:749][TraceID: 8HRWSI105YVO91]->OutgoingData\26651...somedata...每個塊IncomingTime, IncomingData, OutgoingData, etc.的末尾都有塊大?。ㄗ址麛?,而不是字節數)886, 16, 397, 26651。有些塊非常大,沒有大緩沖區就無法讀?。ㄈ绻沂褂胋ufio)。我想使用跳過不必要的塊file.Seek。問題是,file.Seek需要字節長度,并且我只有字符計數(塊可能具有帶兩字節字符的unicode數據)。有機會跳過使用字符計數的塊嗎?
查看完整描述

1 回答

?
神不在的星期二

TA貢獻1963條經驗 獲得超6個贊

問題是文件.Seek需要字節長度,而我只有字符計數(塊可能具有帶兩個字節字符的unicode數據)。有機會跳過使用字符計數的塊嗎?


這實際上是不可能的。正如您描述的文件格式,以下兩種情況都是可能的:


...VersionInfo\1

[ 20 ]

...VersionInfo\1

[ C2 A0 ]

如果您剛剛讀過換行符,并且知道需要讀取一個字符,那么您知道它在1到2個字節之間(UTF-8字符甚至可以增加到4個字節),但不是一個,然后盲目地啟動一些數字字節數而不檢查中間數據將不起作用。病理情況是一個較大的塊,其中前半部分包含許多多字節字符,后半部分具有恰好看起來像您的輸入標頭之一的文本。


使用這種文件格式,您不得不一次讀取一個字符。


查看完整回答
反對 回復 2021-04-19
  • 1 回答
  • 0 關注
  • 275 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號