将Java字符串转换为字节数组

9 浏览
0 Comments

将Java字符串转换为字节数组

我有一个字节数组,我正在对其进行加密,然后将其转换为字符串以便传输。当我接收到字符串后,我需要将字符串转换回字节数组以便解密。我已经检查了接收到的字符串与发送的字符串是否匹配(包括长度),但是当我使用类似str.getBytes()的方法将其转换为字节数组时,它与我的原始字节数组不匹配。

示例输出:

SENT: WzShnf/fOV3NZO2nqnOXZbM1lNwVpcq3qxmXiiv6M5xqC1A3

SENT STR: [B@3e4a9a7d

RECEIVED STR: [B@3e4a9a7d

RECEIVED: W0JAM2U0YTlhN2Q=

有没有办法将接收到的字符串转换为与发送的字节数组匹配的字节数组?

谢谢

0
0 Comments

在Java中,将字符串转换为字节数组是一个常见的需求。有时候,我们可能会遇到类似于"Convert Java string to byte array"这样的问题,即将Java字符串转换为字节数组。下面我们来找出这个问题出现的原因以及解决方法。

根据提供的内容,我们可以看到一些关于将字符串转换为字节数组的讨论。首先,某些情况下这似乎是Base64编码,然后建议使用Apache Commons Codec库中的Base64类。这是因为Base64是一种常见的编码方式,用于将二进制数据转换为可打印的ASCII字符。

然后,有人尝试使用sun.misc.BASE64Decoder类进行转换,但似乎没有成功。这是因为sun.misc包中的类是专有API,可能随时被删除,因此不建议使用。相反,建议使用其他公开的实现,例如Bozho所建议的方法。

最后,有人建议尝试使用string.getBytes("ISO-8859-1")将字符串转换为字节数组,然后将其作为构造函数参数传递。这是因为ISO-8859-1是一种字符编码方式,可以将字符串转换为字节数组。

要将Java字符串转换为字节数组,可以考虑使用Apache Commons Codec库中的Base64类,或者使用string.getBytes("ISO-8859-1")方法。需要注意的是,不建议使用sun.misc包中的类,而应该使用其他公开的实现。

希望这篇文章对你理解如何将Java字符串转换为字节数组有所帮助。

0
0 Comments

问题:将Java字符串转换为字节数组时出现的原因和解决方法。

当在不同的机器上使用getBytes()方法时,由于getBytes()方法使用的是平台的默认字符集,所以无法得到相同的结果。为了确保获得正确的结果,需要使用指定的字符集对数组进行解码和编码。

解决方法如下:

1. 使用指定的字符集将字符串转换为字节数组。

String str = "Hello World";
byte[] byteArray = str.getBytes(Charset.forName("UTF-8"));

2. 将字节数组转换回字符串时,同样需要使用相同的字符集进行解码。

String newStr = new String(byteArray, Charset.forName("UTF-8"));

通过以上方法,可以确保在不同的机器上得到相同的结果,避免了平台字符集的差异导致的问题。

0
0 Comments

问题的出现原因是使用了array.toString()方法将byte数组转换为字符串,而该方法返回的是一个以[B@开头的字符串,后面连接的是该数组的hashCode的十六进制表示。这个hashCode与数组的内容无关。

解决方法是使用new String(array, encoding)方法将byte数组转换为字符串,其中encoding是字符串的编码方式。

需要注意的是,这种方法只适用于能够被Java字符串表示的byte数组(即包含可读字符的数组),而不适用于任意数组。如果需要处理任意数组,最好使用像Bozho推荐的base64编码(但要确保在通信的两端都使用base64编码)。

感谢,这是一个解决问题的快速方法。

0