我已经看到了一些关于此的其他问题,但错误与字符串中的前导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