Bu konuyla ilgili başka sorular gördüm, ancak hatalar dizede baştaki 0 ile ilişkiliydi. Bu maalesef benim durumum değil.Geçerli sayıdaki NumberFormatException Dize
Base64 biçiminde bir dış kaynaktan şifrelenmiş veri alıyorum, sonra da (android sdk sürümü 7 olduğu için bir Base64 kitaplığı kullanarak) kodunu çözün, iletinin şifresini çözüyorum ve tüm bunlardan sonra basit bir dizeye sahibim bir sayı biçimi.
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)
Ben baskılar kullanılan girişi kontrol etmek ve gerçekten dize "2551122" dir:
Ben bu hatayı alıyorum Long
veya Integer
için döküm çalıştığınızda. Ben eşitlik için kontrol çalıştığınızda , o da bunun bir kodlama sorunu olduğunu düşündüm ve kodu çözülmüş bayt alma ve çeşitli kodlamalar dizeleri oluşturma çalıştı
"2551122".equals(numberAsString) // Gives me false
doğru değil, aynı zamanda base64 gelen bayt kodunu çözmek için çalıştı Aynı birkaç kodlamaya sahip dize ve bu hatanın nedenini hala bilmiyoruz.
herhangi bir yardım
GÜNCELLEME takdir edin
Bu (Şifreleyici sınıfı) dizisini deşifre kodudur:
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);
}
Bu hata ortaya çıkar nasıl:
Encryptor encryptor = new Encryptor();
Long.parseLong(encryptor.decrypt(base64String, secretKey)) // Throws me the error
Yayınladığınız kodu postayla gönderebilir misiniz? – javajavajava
ilginç bir soru, Lütfen kodu da yazınız .. – AAnkit
Kodunuzu gönderebilir misiniz? –