繁体   English   中英

如何将字符串转换为字节数组?

[英]How to convert a Strings to a Byte array?

假设我有两个String例如

txt1="something 1";
txt2="something 2";

现在想创建byte[] str= new byte[]; 从那些String

byte[] t1,t2;
t1=txt1.getBytes();
t2=txt2.getBytes();
byte[] strings = { t1,t2};

首先,我建议不要在未先指定编码的情况下使用getBytes() (我通常更喜欢UTF-8,但这取决于您想要什么。)

其次,如果只希望一个字符串的字节紧随另一个字符串的字节,那么最简单的方法是使用字符串串联:

byte[] data = (txt1 + txt2).getBytes(StandardCharsets.UTF_8);

另外,您可以分别获取每个字节数组,然后通过创建一个足以容纳两个字节数组的新字节数组并复制数据来组合它们:

byte[] t1 = txt1.getBytes(StandardCharsets.UTF_8);
byte[] t2 = txt2.getBytes(StandardCharsets.UTF_8);
byte[] both = new byte[t1.length + t2.length];
System.arraycopy(t1, 0, both, 0, t1.length);
System.arraycopy(t2, 0, both, t1.length, t2.length);

我自己会使用字符串连接版本:)

最简单的方法是:

byte[] strings = (t1+t2).getBytes();

否则,您将不得不手动分配足够大的数组并复制各个字节。 我很确定标准API中没有数组连接实用程序功能,尽管Apache Commons中可能有一个...

哦,是的,通常您希望在使用getBytes()时指定编码,而不是依赖于平台默认编码。

因为txt1.getBytes()返回一个byte[] 您正在尝试在数组中分配多个byte[] 将数组和赋值都合并到其中。

byte[] combined = new byte[array1.length + array2.length];

您必须分配新的字节数组,然后将两个字节数组的内容复制到新的字节数组中:

byte[] t1 = txt1.getBytes();
byte[] t2 = txt2.getBytes();

byte[] result = new byte[t1.length + t2.length];

System.arraycopy(t1, 0, result, 0, t1.length);
System.arraycopy(t2, 0, result, t1.length, t2.length);

最简单的方法是使用字符串连接并将其转换为字节数组。

class Ideone
{
    public static void main (String[] args) throws java.lang.Exception
    {
        String txt1="something 1",txt2="something 2";
        //Use '+' string concatenation and convert into byte array.
        byte[] data = (txt1 + txt2).getBytes();
        System.out.println(data);
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM