在Android中,我必须将字节数组转换为字符串,但我的字节数组包含负值。
如果我再次将该字符串转换为字节数组,则得到的值与原始的字节数组值不同。
我可以做些什么来获得正确的转换?我用来进行转换的代码如下:
// Code to convert byte arr to str:
byte[] by_original = {0,1,-2,3,-4,-5,6};
String str1 = new String(by_original);
System.out.println("str1 >> "+str1);
// Code to convert str to byte arr:
byte[] by_new = str1.getBytes();
for(int i=0;i<by_new.length;i++)
System.out.println("by1["+i+"] >> "+str1);
我陷入了这个问题。
发布于 2009-10-08 07:21:37
你的字节数组必须有一些编码。如果您有负值,则编码不能为ASCII。弄清楚这一点后,可以使用以下命令将一组字节转换为字符串:
byte[] bytes = {...}
String str = new String(bytes, StandardCharsets.UTF_8); // for UTF-8 encoding
你可以使用很多编码,看看Oracle javadocs中支持的编码。
发布于 2014-04-09 13:24:50
这对我来说很好:
String cd = "Holding some value";
将字符串转换为byte[]:
byte[] cookie = new sun.misc.BASE64Decoder().decodeBuffer(cd);
将byte[]转换为字符串:
cd = new sun.misc.BASE64Encoder().encode(cookie);
发布于 2015-01-28 11:23:14
private static String toHexadecimal(byte[] digest){
String hash = "";
for(byte aux : digest) {
int b = aux & 0xff;
if (Integer.toHexString(b).length() == 1) hash += "0";
hash += Integer.toHexString(b);
}
return hash;
}
https://stackoverflow.com/questions/1536054
复制相似问题