Geo*_*ang 2 java arrays string bytearray data-conversion
我需要通过Internet发送和接收大字节数组(http restful service).
我能想到的最简单的方法是将字节数组转换为字符串.
我搜索了一下,发现这个帖子Java Byte Array to String to Byte Array
我有以下代码来验证转换的准确性.
System.out.println("message");
System.out.println (message);
String message = "Die Strahlengriffelgewächse stammen...";
byte[] pack = Fbs.packExce(message);
System.out.println ("pack");
System.out.println (pack);
System.out.println ("packlenght:" + pack.length);
String toString = new String(pack);
System.out.println ("toString");
System.out.println (toString);
byte[] toBytes = toString.getBytes();
System.out.println ("toBytes");
System.out.println (toBytes);
System.out.println ("toByteslength:" +toBytes.length);
Run Code Online (Sandbox Code Playgroud)
"Fbs.packExce()"是一种获取大块字符串并生成大字节数组的方法.
我改变了消息的长度,检查并打印出字节数组的长度,然后转换为字符串并转换回来.
我得到了以下结果:
...
pack
[B@5680a178
packlenght:748
...
toBytes
[B@5fdef03a
toByteslength:750
----------------------
...
pack
[B@5680a178
packlenght:1016
...
toBytes
[B@5fdef03a
toByteslength:1018
Run Code Online (Sandbox Code Playgroud)
我省略了"消息",因为它太长了.
10次中的8次,我可以看到派生的字节数组(新的,称"toBytes")比原始字节数组("pack")长2个字节
我说过10个中的8个,因为在派生和原始之间的长度相同的情况下也会出现,见下文
...
pack
[B@5680a178
packlenght:824
toString
...
toBytes
[B@5fdef03a
toByteslength:824
...
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚确切的规则.
有没有人有任何想法?
或者有没有更好的方法将字节数组转换为字符串?
干杯