바이트 배열로 변환 할 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가 필요합니까? –