0

1099511627776ビットの大きさ(ええ、137 GB)の桁の値でPythonを機能させるにはどうすればよいですか?私はこれを実装する必要があるものがいくつかあります(またはそれを行うためのより良い方法を提案できる場合は、メソッドを変更します)。どうやら、pgpの新しい長さタイプには2つではなく3つのセクションがあります。現在は、長さタイプ、長さの値タイプ、および長さです。長さのタイプは2ビットで、これは191バイト、8383バイト、4294967296バイト、または部分的な長さに変換されます。次に、長さはバイト単位でエンコードされます。できない場合でも、値が4294967296バイト未満であるかどうかを確認するにはどうすればよい1 << (4294967296 << 8)ですか?大きすぎて長めでも収まりません。

4

4 に答える 4

2

long に収まるには大きすぎるだけでなく、大きすぎてどのコンピュータのメモリにも収まりません。あなたは何かを誤解していると思います。

私が理解しているように、最大​​のキー値は 4,294,967,295 バイトです。137GBではなく4GBです。そのキーを 1 つの数値としてではなく、バイトの文字列としてメモリに保持します。そのため、137 GB の大きな数値をどこから取得したのかわかりません。

もし PGP がそれを必要とするなら、実装するのは不可能でしょう。実装があるので、それが行われる方法ではないと確信しています。

(また、Python 用の PGP モジュールがあると確信していますが、必要だからではなく、練習や学習のためにこれを行っているのであれば、それを続けてください!)

于 2011-01-03T21:42:50.780 に答える
1

GMPYのような多数のライブラリを使用します。

于 2011-01-03T18:41:39.853 に答える
1

の3つの引数形式を使用しpow()ます。

于 2011-01-03T06:54:18.757 に答える
0

私は RFC4880 (2007 年 11 月) を別様に解釈します。セクション 3.2 では、多倍長整数は長さが 2 オクテットであるため、最大サイズは 64KB であると説明されています。セクション 4.2.2 では、新しいパケット形式について説明し、説明しているスケールの番号を文書化しています。ただし、パケット形式は多倍長整数形式と同じではありません。異なる解釈をしている場合は、読んでいる RFC の正確なセクションで質問を更新してください。

于 2011-01-04T01:44:37.723 に答える