相关疑难解决方法(0)

Java Byte Array to String to Byte Array

我正在尝试理解byte []到字符串,字节[]到byte []转换的字符串表示...我将我的byte []转换为要发送的字符串,然后我希望我的Web服务(用python编写)将数据直接回送给客户端.

当我从Java应用程序发送数据时......

Arrays.toString(data.toByteArray())
Run Code Online (Sandbox Code Playgroud)

要发送的字节..

[B@405217f8
Run Code Online (Sandbox Code Playgroud)

发送(这是Arrays.toString()的结果,它应该是我的字节数据的字符串表示,这些数据将通过线路发送):

[-47, 1, 16, 84, 2, 101, 110, 83, 111, 109, 101, 32, 78, 70, 67, 32, 68, 97, 116, 97]
Run Code Online (Sandbox Code Playgroud)

在python端,python服务器返回一个字符串给调用者(我可以看到它与我发送到服务器的字符串相同)

[-47, 1, 16, 84, 2, 101, 110, 83, 111, 109, 101, 32, 78, 70, 67, 32, 68, 97, 116, 97]
Run Code Online (Sandbox Code Playgroud)

服务器应将此数据返回给客户端,以便进行验证.

我的客户端收到的响应(作为字符串)看起来像

[-47, 1, 16, 84, 2, 101, 110, 83, 111, 109, 101, 32, 78, 70, 67, 32, 68, 97, 116, 97]
Run Code Online (Sandbox Code Playgroud)

我似乎无法弄清楚如何将收到的字符串恢复为字节[]

无论我似乎尝试什么,我最终得到一个字节数组,看起来如下......

[91, 45, 52, 55, 44, 32, …
Run Code Online (Sandbox Code Playgroud)

java string byte

173
推荐指数
5
解决办法
58万
查看次数

字节到字符串,反之亦然

我需要转换随机生成的salt值并将其存储在数据库中.要将它存储在数据库中,我将其转换为字符串.然后,为了检索原始值,我将其转换回字节.但两个值都不匹配.我试过"UTF-8","UTF-16",BASE64Encoder.

SecureRandom ranGen = new SecureRandom();
byte[] aesKey = new byte[16]; // 16 bytes = 128 bits
ranGen.nextBytes(aesKey);   
System.out.println(aesKey);

String a=new String(aesKey,"UTF-16");
byte[] b=new byte[16];
b=a.getBytes("UTF-16");
System.out.println(b);
Run Code Online (Sandbox Code Playgroud)

上述代码的输出(执行2次):

[B@11563ff
[B@1581593
Run Code Online (Sandbox Code Playgroud)

[B@170888e
[B@11563ff
Run Code Online (Sandbox Code Playgroud)

java encoding bytearray character-encoding

4
推荐指数
1
解决办法
3734
查看次数

标签 统计

java ×2

byte ×1

bytearray ×1

character-encoding ×1

encoding ×1

string ×1