0
我是反向工程自定義二進制文件格式。我找到了表示UTF-8字符串的數據結構。頭中有一個或兩個字節用於保存字符串長度,然後是實際的字符串數據。用於存儲UTF-8字符串的反轉二進制結構
╔════════════╦═══════════════╦═══════════════════╗
║ first byte ║ optional byte ║ UTF-8 string data ║
╚════════════╩═══════════════╩═══════════════════╝
標頭中的第二個字節是可選的,它只在字符串長度大於128字節時出現。當字符串長度小於或等於128字節時,解碼它的長度很容易。但是,當字符串長度> 128時,我無法計算字符串長度。所以我做了實驗並生成了許多不同字符串長度的二進制文件,結果如下。字符串長度以字節爲單位。
╔════╦════╦═══════════════╗
║ 01 ║ 02 ║ String length ║
╠════╬════╬═══════════════╣
║ 7D ║N/A ║ 126 ║
║ 7E ║N/A ║ 127 ║
║ 7F ║N/A ║ 128 ║
║ 80 ║ 01 ║ 129 ║
║ 81 ║ 01 ║ 130 ║
║ C7 ║ 01 ║ 200 ║
║ C8 ║ 01 ║ 201 ║
║ F9 ║ 01 ║ 250 ║
║ FE ║ 01 ║ 255 ║
║ FF ║ 01 ║ 256 ║
║ 80 ║ 02 ║ 257 ║
║ 81 ║ 02 ║ 258 ║
║ 82 ║ 02 ║ 259 ║
║ F3 ║ 03 ║ 500 ║
║ F4 ║ 03 ║ 501 ║
║ F5 ║ 03 ║ 502 ║
║ F6 ║ 03 ║ 503 ║
║ 80 ║ 04 ║ 513 ║
╚════╩════╩═══════════════╝
我讀的地方,PASCAL \ Delphi是使用字符串格式,其中有頭保存字符串的長度,而不是空終止像C字符串,它類似於我的情況。我的問題是,你有關於這種格式的想法嗎?如何計算長度大於128個字節的字符串長度。
謝謝!順便說一句,這是一個已知的格式? –
不是我所知道的 – EugeneK