私はカスタムバイナリファイル形式をリバースエンジニアリングしています。 UTF-8文字列を表すデータ構造が見つかりました。文字列の長さを保存するヘッダーには1〜2バイト、次に実際の文字列データがあります。UTF-8文字列を格納するために使用されるバイナリ構造を逆にする
╔════════════╦═══════════════╦═══════════════════╗
║ first byte ║ optional byte ║ UTF-8 string data ║
╚════════════╩═══════════════╩═══════════════════╝
ヘッダーの2番目のバイトはオプションで、文字列の長さが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 ║
╚════╩════╩═══════════════╝
私はそれが代わりにヌルの文字列の長さを保存するために、ヘッダを有する場合、そのパスカル\デルファイは、文字列形式を使用しているどこかで読んで、私の場合と同様に見えるCのように文字列を、終了しました。私の質問は、あなたはこのフォーマットについて考えていますか?文字列の長さが128バイトを超える場合、それをどのようにして計算できますか?
ありがとうございます!ところで、それは既知の形式ですか? –
わからない – EugeneK