Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android 2.1的Android Base64解码_Java_Android_Base64 - Fatal编程技术网

Java Android 2.1的Android Base64解码

Java Android 2.1的Android Base64解码,java,android,base64,Java,Android,Base64,我正在构建一个API级别为7(Android 2.1)的应用程序,我需要解码服务器接收的字符串,该字符串用Base64编码。我知道Base64库包含在Android2.2中,这就是为什么我在我的项目中直接包含它的源代码。您可以在此处找到源代码: 因此,我的问题是,当我尝试解码字符串时,base64返回以下内容:base64:[B@46392d10 如果我在在线base64解码器上运行服务器发送给我的代码,我会得到以下信息:le:“en_US”,“id”:2,“error_code”:6003,“

我正在构建一个API级别为7(Android 2.1)的应用程序,我需要解码服务器接收的字符串,该字符串用Base64编码。我知道Base64库包含在Android2.2中,这就是为什么我在我的项目中直接包含它的源代码。您可以在此处找到源代码:

因此,我的问题是,当我尝试解码字符串时,base64返回以下内容:
base64:[B@46392d10

如果我在在线base64解码器上运行服务器发送给我的代码,我会得到以下信息:
le:“en_US”,“id”:2,“error_code”:6003,“error_string:“Unsupported Client Version”}

以下是我正在使用的代码:

HttpResponse response = httpclient.execute(httppost);
Log.v("Response ","Status line : "+ response.getStatusLine().toString());
String responseBody = EntityUtils.toString(response.getEntity()); //response
Log.v("Response ","Response : "+ responseBody);

String objectIdentificator = responseBody.substring(0,32);
Log.v("Response ","Object Identificator (LONGINT) : "+ objectIdentificator);

String type = responseBody.substring(33,36);
Log.v("Response ","TYPE (UNSIGNED BYTE) : "+ type);

String operation = responseBody.substring(37,40);
Log.v("Response ","OPERATION (UNSIGNED BYTE) : "+ operation);

String objectId = responseBody.substring(41, 73);
Log.v("Response ","UID (CHAR, length 32) : "+ objectId);

String id = responseBody.substring(74, 106);
Log.v("Response ","ID (LONGINT) : "+ id);

String size = responseBody.substring(107,139);
Log.v("Response ","Data Size (LONGINT) : "+ size);

String hash = responseBody.substring(140,172);
Log.v("Response ","Data Hash (CHAR, length 32 : "+ hash);

String dType = responseBody.substring(173,176);
Log.v("Response ","Data Type (UNSIGNED BYTE) : "+ dType);

String data = responseBody.substring(177, responseBody.length());
Log.v("Response ","Data (CHAR, any length, in BASE64) : "+ data);
String first = Base64.decode(data, Base64.DEFAULT).toString();
Log.v("Response ","BASE 64 : "+ first);

有什么建议吗?

你读过如何使用它吗?它在你链接的页面顶部,你不可能错过它:)
decode()
返回一个字节数组,你需要将它转换成
字符串
。不要通过调用
toString()
你的问题与
Base64
无关

Base64
类正确返回一个包含数据的
byte[]
。您可以对该
byte[]
调用
toString()
,它不使用
byte[]
的内容,而只使用它的
identityHashCode()

您要做的是通过提供正确的编码将
字节[]
转换为
字符串

byte[] bytes = Base64.decode(data, Base64.DEFAULT);
String string = new String(bytes, "UTF-8");

上面的链接已断开。它似乎已被移动。感谢您的评论!我希望这对其他人有所帮助:)小心,我在移动应用程序中使用了Base64代码对图像进行编码,在服务器上解码图像时遇到了一些问题,我不得不转到Android 2.2