如何将字符串数组转换为字节数组?(java)
2022-09-04 19:38:26
我有一个一维字符串数组,我想将其转换为一维字节数组。我该怎么做?这需要字节缓冲器吗?我该怎么做?(字符串可以是任何长度,只是想知道如何去做这样的行为。在将其转换为字节数组后,我该如何将其转换回字符串数组?
-丹
我有一个一维字符串数组,我想将其转换为一维字节数组。我该怎么做?这需要字节缓冲器吗?我该怎么做?(字符串可以是任何长度,只是想知道如何去做这样的行为。在将其转换为字节数组后,我该如何将其转换回字符串数组?
-丹
数组到数组,您应该手动转换并解析到两边,但是如果您只有一个字符串,则可以和;喜欢这个String.getBytes()
new String(byte[] data)
public static void main(String[] args) {
String[] strings = new String[]{"first", "second"};
System.out.println(Arrays.toString(strings));
byte[][] byteStrings = convertToBytes(strings);
strings = convertToStrings(byteStrings);
System.out.println(Arrays.toString(strings));
}
private static String[] convertToStrings(byte[][] byteStrings) {
String[] data = new String[byteStrings.length];
for (int i = 0; i < byteStrings.length; i++) {
data[i] = new String(byteStrings[i], Charset.defaultCharset());
}
return data;
}
private static byte[][] convertToBytes(String[] strings) {
byte[][] data = new byte[strings.length][];
for (int i = 0; i < strings.length; i++) {
String string = strings[i];
data[i] = string.getBytes(Charset.defaultCharset()); // you can chose charset
}
return data;
}
对于字符串[]中的一个字节[],您必须:
你没有说出你想用字节做什么(除了将它们转换回之后),但假设你可以把它们当作一个不透明的数据袋(所以你可以将它们保存到一个文件或通过网络发送它们,或者其他什么,但你不需要以任何方式检查或修改它们), 我认为你最好的选择是使用序列化。要序列化字符串数组,可以编写如下内容:String[]
final String[] stringArray = { "foo", "bar", "baz" };
final ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
final ObjectOutputStream objectOutputStream =
new ObjectOutputStream(byteArrayOutputStream);
objectOutputStream.writeObject(stringArray);
objectOutputStream.flush();
objectOutputStream.close();
final byte[] byteArray = byteArrayOutputStream.toByteArray();
为了在之后恢复它,你会写反面:
final ByteArrayInputStream byteArrayInputStream =
new ByteArrayInputStream(byteArray);
final ObjectInputStream objectInputStream =
new ObjectInputStream(byteArrayInputStream);
final String[] stringArray2 = (String[]) objectInputStream.readObject();
objectInputStream.close();