我正在尝试理解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) 我需要转换随机生成的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)