Bir bayt dizisine dönüştürmek istediğim bir dizi ve sıfır var.İkili dizgiyi bayt dizisine dönüştürme
Örneğin String b = "0110100001101001"
Bunu bir byte[]
uzunluk 2'ye nasıl dönüştürebilirim?
Bir bayt dizisine dönüştürmek istediğim bir dizi ve sıfır var.İkili dizgiyi bayt dizisine dönüştürme
Örneğin String b = "0110100001101001"
Bunu bir byte[]
uzunluk 2'ye nasıl dönüştürebilirim?
Temel 2'de bir tam sayıya böler, ardından bir bayt dizisine dönüştürür. Aslında, 16 bite sahip olduğunuzdan, nadiren kullanılan short
'un çıkma zamanı.
short a = Short.parseShort(b, 2);
ByteBuffer bytes = ByteBuffer.allocate(2).putShort(a);
byte[] array = bytes.array();
Dize, çok fazla bit içeriyorsa ne olur? ' Uzun bir değişkende bile tutulabilir mi? –
Bu çok havalı! Bilmiyordum, teşekkürler! :) –
Dize çok büyükse, bir "NumberFormatException" alırsınız. Bu küçük örnek için 32 karakterden az olduğu varsayımları yapıyorum. –
Başka basit bir yaklaşımdır:
String b = "0110100001101001";
byte[] bval = new BigInteger(b, 2).toByteArray();
ayrıştırılamıyor "1110100001101001" –
Bkz. Http://stackoverflow.com/questions/24158629/biginteger-tobytearray-returns-purposeful-leading-zeros Bazı işaretleme sorunlarınız olabilir. – will
Byte [] fspec = new BigInteger ("10000000", 2) .toByteArray() öğesini görüntülerken, beklenen değer yerine [B3b22cdd0] değerini gösterir - neden? – Line
yöntemiyle aşağıdaki kullanabileceğiniz bir dinlenme almadan ikili dize 8 ile ayrılabilir varsayarsak:
/**
* 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;
}
unutma bağımlılarınıza guava lib eklemek için.
compile group: 'com.google.guava', name: 'guava', version: '19.0'
Ve proje gradle içine bu ekleyin::
Android'de size uygulama gradle eklemeniz gereken
allprojects {
repositories {
mavenCentral()
}
}
Güncelleme 1
This post contains bir çözüm Guava Lib kullanmadan.
Neden uzunluk 2? –
@kocko'nun 16 biti var ... –
Dize b'den çıkıp, byte [] uzunluk 2'yi '104' 0 konumunda ve' 105' 1 konumunda mı istiyorsunuz? –