2016-02-15 78 views
-2

我有這段代碼讀取一個字符串的加密片段(所以,當使用記事本打開時的一些垃圾值),但我不斷收到「java.lang.NumberFormatException:非法嵌入符號字符」。Java BigInteger&String

FileReader fr = new FileReader("encrypted.txt"); 
Scanner sc = new Scanner(fr); 
String s = sc.nextLine(); 

BigInteger OC = new BigInteger(s); 

我不知道它是否與我使用的編譯版本的SDK不斷給我的錯誤,或只是在代碼中的某處出錯有關。

+3

那麼你會如何期待它將垃圾文本讀取爲整數? –

+0

將一個隨機字節讀入一個'java.lang.String'是一個好主意。如果需要,您應該將其作爲字節數組讀取並轉換爲字節。看到這個答案:http://stackoverflow.com/questions/858980/file-to-byte-in-java –

+0

@JonSkeet有點顯而易見,奇怪爲什麼我錯過了,謝謝,雖然! – user5844671

回答

1

encrypted.txt文件應該有數字而不是編碼的字符串。如果你改變它,它會起作用。原因是BigInteger()構造函數需要一個只有數字的字符串。

+0

如果它被加密,那麼它可能在32位,在這種情況下使用[radix](https://docs.oracle.com/javase/7/docs/api/java/math/BigInteger.html#BigInteger%28java .lang.String,%20int%29)版本可能就足夠了。 – OldCurmudgeon