I have a string of ones and zeros that I want to convert to an array of bytes.
For example String b = "0110100001101001"
How can I convert this to a byte[]
of length 2?
I have a string of ones and zeros that I want to convert to an array of bytes.
For example String b = "0110100001101001"
How can I convert this to a byte[]
of length 2?
Parse it to an integer in base 2, then convert to a byte array. In fact, since you've got 16 bits it's time to break out the rarely used short
.
short a = Short.parseShort(b, 2);
ByteBuffer bytes = ByteBuffer.allocate(2).putShort(a);
byte[] array = bytes.array();
long
variable? –
Paten NumberFormatException
. I'm making assumptions that it's less than 32 characters for this small example. –
Mylesmylitta b
is in an invalid format a NumberFormatException
will be thrown and it's up to the callee to handle the error. Open to suggestions on how to improve this, but I think this is enough of an answer to illustrate the point. –
Mylesmylitta BigInteger
as the other answer suggested will take care of that issue. –
Phylloquinone Another simple approach is:
String b = "0110100001101001";
byte[] bval = new BigInteger(b, 2).toByteArray();
Assuming that your binary String can be divided by 8 without getting a rest you can use following method:
/**
* 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;
}
Don't forget to add the guava lib to your dependecies.
In Android you should add to app gradle:
compile group: 'com.google.guava', name: 'guava', version: '19.0'
And add this into project gradle:
allprojects {
repositories {
mavenCentral()
}
}
Update 1
This post contains a solution without using Guava Lib.
© 2022 - 2024 — McMap. All rights reserved.
104
in position 0, and105
in position 1? – Sudiesudnor