0

假设我有两个String喜欢

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

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

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

5 回答 5

5

首先,我建议不要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);

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

于 2013-09-12T07:18:51.187 回答
5

最简单的方法是:

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

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

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

于 2013-09-12T07:19:43.307 回答
1

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

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);
    }
}
于 2013-09-12T07:29:01.747 回答
1

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

byte[] combined = new byte[array1.length + array2.length];
于 2013-09-12T07:18:36.477 回答
1

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

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);
于 2013-09-12T07:20:20.610 回答