我已經看到了一些關於此的其他問題,但錯誤與字符串中的前導0有關。這不幸的是不是我的情況。有效數字上的NumberFormatException字符串字符串
我正在從base64格式的外部源接收加密數據,然後解碼它(使用包含的Base64庫,因爲android sdk版本爲7),解密消息,以及畢竟我有一個簡單的字符串數字格式。
當我嘗試將其轉換爲Long
或Integer
我得到這個錯誤:
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)
要檢查我用打印輸入,它確實是字符串「2551122」。 當我嘗試檢查平等,這也是不正確
"2551122".equals(numberAsString) // Gives me false
我認爲這是一個編碼的問題,並試圖採取解碼的位元和幾個編碼創建的字符串,也試圖從以base64字節進行解碼字符串與這些相同的幾種編碼,仍然不知道是什麼導致此錯誤。
請任何幫助表示讚賞
UPDATE
這是解密字符串(加密器類)的代碼:
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);
}
這是錯誤是如何提出:
Encryptor encryptor = new Encryptor();
Long.parseLong(encryptor.decrypt(base64String, secretKey)) // Throws me the error
你可以發佈你的代碼嗎? – javajavajava 2012-07-06 16:38:45
有趣的問題,請張貼代碼.. – AAnkit 2012-07-06 16:39:54
請問您可以發佈您的代碼? – 2012-07-06 16:41:56