As an input I have binary string String a = "100110". As output I need to have binary byte array byte[] b = {1,0,0,1,1,0}.
For now I'm using
for (int i=0; i<a.length; i++) {
b[i]= Byte.parseByte(a.substring(i, i+1));
}
But this approach is too slow. Can any one give a better suggestion? Thank you
You can do it without making objects for substrings, like this:
for (int i=0; i<a.length; i++) {
b[i]= a.charAt(i)=='1' ? (byte)1 : (byte)0;
}
The reason your approach is slower is that each call to substring produces a new String object, which becomes eligible for garbage collection as soon as parseByte is done with it.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With