-4

16桁の配列を配置するだけでは配列には多すぎて答えが得られることはわかっていますが、サイバーセキュリティクラスでは、近所のルーターにアクセスしたいと考えています。

私はそれらをいじりませんが、私はポイントを証明するのに役立ちます.そして、どこにも住んでいないおかげで、すべてのルーターは同じです. それらは 16 桁の長さです。

では、16桁をまとめてtxtファイルにすべて作成する方法を解決するのを手伝ってくれる人はいますか?

私がやりたいことは、新しいファイルを作成してから、0000000000000000 -> 9999999999999999 のすべての番号を持つ辞書タイプになるようにすることです。

ファイルの作成は問題ありませんが、この 16 の数列を含む数の辞書を作成するにはどうすればよいでしょうか。

編集: 4 つの 4 桁のものに分割することを考えましたが、a) 前と同じ数字ではないこと、および b) 16 桁目の後にスペースを入れる方法がわかりません。

4

4 に答える 4

3

まず、番号 (99...9) は 16 桁です。Javaのデータ型に関しては、約53ビット(これまでのところ64ビット未満)なので、long

ただし、各数値が 64 ビットであると仮定します。したがって、ファイルサイズは size = (99..99) (number) * 64 (bit per number) = 73k Tera Byte (通常の方法でテキストファイルに保存することはできません!)となります。

別の方法を考えたほうがいい(?)

さらに、宣言することはできませんlong l = 999999999999999。コンパイラがエラー(整数が大きい)を受け取ったためですが、これは機能します:long l = Long.parseLong("9999999999999999");

これがあなたを助けることを願っています!


編集: Declare by long l = 9999999999999999999l;(l大文字と小文字の両方を使用できます。@Tom に感謝します)

于 2012-05-25T20:16:15.203 に答える
0

私があなたの問題を正しく理解しているなら、あなたはこれをしたい:

for(Double i = 0; i < 10000000000000000;i++)  
{  
       String s = i.toString();
       bufferedWriter.write(s);
}  

Double現在の文字列表現をテキストファイルに書き込みます。

于 2012-05-25T19:41:49.637 に答える
0

質問はより明確になる可能性がありますが、私が理解している場合は、次のようなフィールドが必要です。

int i = 10000000000000000;

または多分

int[] i = { 1000000000000000 };

しかし、それは整数をオーバーフローします。Java には BigInteger クラスと呼ばれるものがあり、任意の数を保持できますが、文字列で初期化します。

List<BigInteger> i = new ArrayList<BigInteger>();
i.add(new BigInteger("1000000000000000"));

欠点は、bi1 + bi2 のような通常の算術オペランドを使用できないことですが、BigInteger クラスは、通常の数値であるかのように操作するために必要なほとんどすべてを提供します。 参照用の javadoc は次のとおりです。

于 2012-05-25T20:03:19.347 に答える
-1

これを行う最も簡単な方法は、forループを使用することです。LinkedList速度のためにはAが最適です。

LinkedList<Double> list = new LinkedList<Double>();
for(double i=0;i<10000000000000000;i++)
    list.add(i);
//Output list to file next.
于 2012-05-25T18:59:38.890 に答える