PHP で Gettext MO ファイル ハッシュ テーブルをいじってみました。このオプションのテーブルがどれほど重要かはわかりませんが、MO ファイルを生成するときに、可能であれば完全な仕様を実装していることを確認したいと思います。
Mac と Linux で"","a","b","c"
Gettext を使用してエントリを含む単純な PO ファイルをコンパイルしました。msgfmt
ハッシュ テーブルの長さは 5 バイトですが、奇妙なことに、次のように大部分が null バイトです。01 00 00 00 00
Gettext ソース コードから取得したアルゴリズムを実行すると、01 00 02 03 04
代わりにテーブルが生成されます。
ここに私のテストコードがあります
: https://gist.github.com/timwhitlock/8255619
(例のPOファイルを含む)
私自身のハッシュ テーブルのコンパイルは間違っている可能性がありますが、最初に、msgfmt で生成された MO ファイルのハッシュ テーブルがほとんどゼロである理由を理解したいのですか?
MOファイルからハッシュテーブルを正しくプルしていると確信しています。spec で概説されているように、6 番目のバイトからテーブルのサイズと位置を取得します。
私の「abc」の例では、二重ハッシュが使用されていないため、テーブルが正しいかどうかに関係なく、そのテーブルがどのように正しいかわかりません。
この「abc」の例の正しいハッシュ テーブルは何ですか?