2012-01-03 4 views

答えて

2

これは動作するはずです(明示的にテストするために1.8.1はインストールされていません)。 Per the Marshal documentation

マーシャルされたデータには、オブジェクト情報と共に格納されているメジャーバージョン番号とマイナーバージョン番号があります。通常の使用では、マーシャリングは、同じメジャーバージョン番号と等しいかそれより小さいマイナーバージョン番号で書き込まれたデータのみをロードできます。 Rubyの "詳細"フラグが設定されている場合(通常は-d、-v、-w、-verboseを使用)、メジャー番号とマイナー番号は正確に一致する必要があります。 Marshalのバージョン管理は、Rubyのバージョン番号とは独立しています。マーシャリングされたデータの最初の2バイトを読み取って、バージョンを抽出することができます。 Rubyの1.9.3のよう

として、marshall.cは、メジャー/マイナーバージョンを定義します:Rubyの1.8.1のmarshall.cを見てみると

#define MARSHAL_MAJOR 4 
#define MARSHAL_MINOR 8 

が同じバージョンを示しています。

+0

ああ、私はルビーマーシャルのデータを見ていないと思う。そのRPGメーカーのvxデータファイルと彼らは似ています。私は1.9.3でそれらをロードしようとしましたが、それは間違ったバージョンを言った。まあ、私はそれをリバースエンジニアリングする必要がありますね。私は現在コンピュータではないが、私はあなたの言葉をそれに使うだろう。ありがとう! – Ell

+0

Hmm私は今、ルビー1.8.1からの通常のデータをダンプしようとしましたが、1.9.3はそれを読み込みません - 私はこの回答を受け入れ、質問を更新する必要がありますか? (痛いと申し訳ありません) – Ell

+0

エラーメッセージがありましたか?クラスの依存関係を逃したような? – lulalala

関連する問題