我想将我的byte[]
转换为String
,然后将该String
转换为byte[]
。
所以
byte[] b = myFunction();
String bstring = b.toString();
/* Here the methode to convert the bstring to byte[], and call it ser */
String deser = new String(ser);
bstring给了我[B@74e752bb
。
然后将String
转换为byte[]
。我没有按此顺序使用它,但这是一个示例。
我该如何用Java做到这一点?
亲切的问候,
Stijn
答案 0 :(得分:3)
将byte []转换为String时,应使用此
new String(b, "UTF-8");
而不是
b.toString();
将字节数组转换为String时,应始终指定字符编码,并在从String转换回字节数组时使用相同的编码。最好使用UTF-8编码,因为它非常强大且紧凑,可以表示超过一百万个字符。如果未指定字符编码,则可能会使用平台的默认编码,当从字节数组转换为String时,该默认编码可能无法正确表示所有字符。
您的方法处理得当时,应这样写:
public static void main(String args[]) throws Exception {
byte[] b = myFunction();
// String bstring = b.toString(); // don't do this
String bstring = new String(b, "UTF-8");
byte[] ser = bstring.getBytes("UTF-8");
/* Here the methode to convert the bstring to byte[], and call it ser */
String deser = new String(ser, "UTF-8");
}
答案 1 :(得分:1)
我不是专家,但是您应该尝试使用“ Byte”类提供的方法,并在必要时尝试一些循环。尝试byte b = Byte.parseByte(String s)
将字符串转换为字节,并尝试String s = Byte.toString(byte b)
将字节转换为字符串。希望这会有所帮助:)。
答案 2 :(得分:1)
您可以这样做,
String string = "Your String";
byte[] bytesFromString = string.getBytes(); // get bytes from a String
String StringFromByteArray = new String(bytesFromString); // get the String from a byte array