バイトの配列に変換する1と0の文字列があります。バイナリ文字列をバイト配列に変換する
たとえば、String b = "0110100001101001"
これを長さ2のbyte[]
に変換するにはどうすればよいですか?
バイトの配列に変換する1と0の文字列があります。バイナリ文字列をバイト配列に変換する
たとえば、String b = "0110100001101001"
これを長さ2のbyte[]
に変換するにはどうすればよいですか?
これを2の整数に解析し、バイト配列に変換します。実際には、あなたは16ビットを持っているので、まれに使用されたshort
を打ち破る時間です。
short a = Short.parseShort(b, 2);
ByteBuffer bytes = ByteBuffer.allocate(2).putShort(a);
byte[] array = bytes.array();
文字列に含まれるビットが多すぎて、 「長い」変数でも保持されますか? –
これはとても涼しいです!私はそれを知らなかった、ありがとう! :) –
文字列が大きすぎる場合は、 'NumberFormatException'を取得します。私はこの小さな例では32文字未満であると仮定しています。 –
別の簡単な方法は、次のとおりです。
String b = "0110100001101001";
byte[] bval = new BigInteger(b, 2).toByteArray();
はあなたのバイナリ文字列を使用すると、メソッド次使用することができ、残りを得ることなく8で割ることができると仮定すると:
/**
* Get an byte array by binary string
* @param binaryString the string representing a byte
* @return an byte array
*/
public static byte[] getByteByString(String binaryString){
Iterable iterable = Splitter.fixedLength(8).split(binaryString);
byte[] ret = new byte[Iterables.size(iterable) ];
Iterator iterator = iterable.iterator();
int i = 0;
while (iterator.hasNext()) {
Integer byteAsInt = Integer.parseInt(iterator.next().toString(), 2);
ret[i] = byteAsInt.byteValue();
i++;
}
return ret;
}
忘れてはいけませんあなたの従業員にguava libを追加してください。
compile group: 'com.google.guava', name: 'guava', version: '19.0'
をし、プロジェクトのGradleにこれを追加します:
アンドロイドでは、アプリのGradleのに追加する必要があります
allprojects {
repositories {
mavenCentral()
}
}
アップデート1
This post containsソリューションをグアバのLibを使用せずに。
なぜ長さ2ですか? –
@kocko彼は16ビットを持っています... –
文字列bに基づいて、位置0に '104'、位置1に' 105'という長さ2のバイトが必要ですか? –