Widziałem kilka innych pytań na ten temat, ale błędy były związane z wiodącym 0 w ciągu znaków. To niestety nie jest moja sprawa.NumberFormatException na prawidłowym numerze String
Otrzymuję zaszyfrowane dane z zewnętrznego źródła w formacie base64, następnie je odkodowuję (przy użyciu dołączonej biblioteki Base64, ponieważ wersja Androida sdk to 7), odszyfruję wiadomość, a po wszystkim mam prosty ciąg znaków format liczbowy.
Kiedy próbuję oddanych do Long
lub Integer
otrzymuję ten błąd:
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)
Aby sprawdzić wejście użyłem wydruki i to naprawdę jest ciąg "2551122". Przy próbie sprawdzenia równości, to również nie jest poprawne
"2551122".equals(numberAsString) // Gives me false
myślałem, że to kwestia kodowania i próbował biorąc zakodowane bajty i tworzenie napisów w kilku kodowań, próbował również dekodować bajtach od base64 ciąg z tymi samymi kilkoma kodowaniami i nadal nie mają pojęcia, co powoduje ten błąd.
Proszę Każda pomoc jest mile widziana
UPDATE
Jest to kod do odszyfrowania ciąg (klasa Encryptor):
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);
}
ten sposób błąd jest podniesiona:
Encryptor encryptor = new Encryptor();
Long.parseLong(encryptor.decrypt(base64String, secretKey)) // Throws me the error
Czy możesz wysłać kod, pod który go przesyłasz? – javajavajava
ciekawe pytanie, proszę zaksięguj również kod. – AAnkit
Czy możesz wysłać swój kod? –