のような2 つString
の sがあるとします。
txt1="something 1";
txt2="something 2";
byte[] str= new byte[];
今それらからString
作成したかった
byte[] t1,t2;
t1=txt1.getBytes();
t2=txt2.getBytes();
byte[] strings = { t1,t2};
のような2 つString
の sがあるとします。
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];
最も簡単な方法は、文字列連結を使用してバイト配列に変換することです。
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);
}
}
新しいバイト配列を割り当て、2 つのバイト配列の内容を新しいバイト配列にコピーする必要があります。
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);