Ich habe einige andere Fragen zu diesem Thema gesehen, aber die Fehler wurden zu einem führenden 0 in der Zeichenfolge verwendet. Dies ist leider nicht mein Fall.Number auf gültige Nummer String
Ich erhalte verschlüsselte Daten von einer externen Quelle im Base64-Format, ich entziffere sie dann (unter Verwendung einer mitgelieferten Base64-Bibliothek, da die Android-SDK-Version 7 ist), entschlüssle die Nachricht, und schließlich habe ich eine einfache Zeichenfolge ein Zahlenformat
Wenn ich versuche, es zu gieße Long
oder Integer
ich diesen Fehler:
java.lang.NumberFormatException: Invalid long: "2551122"
at java.lang.Long.invalidLong(Long.java:125)
at java.lang.Long.parse(Long.java:362)
at java.lang.Long.parseLong(Long.java:353)
at java.lang.Long.parseLong(Long.java:319)
at com.nzn.lol.LoginActivity$LoginTask.doInBackground(LoginActivity.java:98)
at com.nzn.lol.LoginActivity$LoginTask.doInBackground(LoginActivity.java:1)
at android.os.AsyncTask$2.call(AsyncTask.java:264)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
at java.util.concurrent.FutureTask.run(FutureTask.java:137)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
die Eingabe zu überprüfen I Drucken verwendet und es ist wirklich die Zeichenfolge „2551122“. Wenn ich auf Gleichheit zu überprüfen versuchen, es ist auch eine Codierung Problem und versucht, die entschlüsselten Bytes nehmen und die Schaffung von Zeichenketten in mehreren Codierungen, versuchte auch nicht richtig
"2551122".equals(numberAsString) // Gives me false
Ich dachte, es war die Bytes aus dem base64 zu dekodieren Zeichenkette mit diesen gleichen mehreren Kodierungen und haben immer noch keine Ahnung von dem, was diesen Fehler verursacht.
Bitte jede Hilfe ist
geschätztUPDATE
Dies ist der Code zum Entschlüsseln der Zeichenfolge (Encryptor Klasse):
private static byte[] decrypt(byte[] raw, byte[] encrypted) throws Exception {
SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
Cipher cipher = Cipher.getInstance(encryptionAlgorithim);
cipher.init(Cipher.DECRYPT_MODE, skeySpec, new IvParameterSpec(iVector));
byte[] decrypted = cipher.doFinal(encrypted);
return decrypted;
}
public String decrypt(String encryptedString, String key) {
byte[] keyBytes = key.getBytes();
byte[] decoded = Base64.decode(encryptedString); // Decodes the string from base64 to byte[]
byte[] result = decrypt(keyBytes, decoded);
return new String(result);
}
Dies ist, wie der Fehler ausgelöst wird:
Encryptor encryptor = new Encryptor();
Long.parseLong(encryptor.decrypt(base64String, secretKey)) // Throws me the error
können Sie nach dem Code, wo Sie es werfen? – javajavajava
interessante Frage, bitte den Code auch posten .. – AAnkit
Könnten Sie bitte Ihren Code posten? –