Next: , Previous: , Up: Internals   [Index]


16.4 単純出力形式の内部構造

mpz_out_rawは次のようなフォーマットを使います。

+--------+------------------------+
| サイズ |     データバイト列     |
+--------+------------------------+

最初の「サイズ」部は4バイトの大きさで,その後ろに「データバイト列」が続きます。サイズ部が2の補数で表現された負数の時は,負の整数という意味になります。データバイト列の部分は整数の絶対値で,最大桁にあたる部分がデータバイト列の先頭に来ることになります。

最大桁にあたるデータバイト列は常に非ゼロとなりますので,リムサイズと無関係に,どんな計算機システム上でも同じ出力結果となります。

GMP Version 1では,リムサイズ分だけゼロとなるバイト値を詰め込んでいました。mpz_inp_rawでも互換性のため,そのようにしています。

サイズ部分とデータバイト列を「ビッグエンディアン」として表現するのは慎重にお願いします。というのも,16進ダンプファイルとして読み取る分にはいいのですが,リムの並びは逆から読み書きしなければなりません。ということで,ビッグエンディアン環境でもリトルエンディアン環境でも,_mp_dだけを読み書きすることはできません。