Разделить байт в списке из n бит
У меня есть байт, и я должен разделить его на блоки n
биты и поместить эти последовательности в список.
Примеры:
если n=2:
byte b = {171}_10 = {1010 1011}_2
--> list = {10, 10, 10, 11}
если n=2:
byte b = {108}_10 = {0110 1100}_2
--> list = {01, 10, 11, 00}
если n=3:
byte b = {171}_10 = {1010 1011}_2
--> list = {101, 010} -> I removed the last 2 bits
если n=3:
byte b = {108}_10 = {0110 1100}_2
--> list = {011, 011} -> I removed the last 2 bits
Как я могу это сделать?
2 ответа
Вы можете сделать что-то вроде этого:
int len=2;
int number=1212;
char[] chars = Integer.toString(number, 2).toCharArray();
String[] strs= new String[(chars.length+len-1)/len];
for(int i=0,j=0;i<chars.length;i+=len,j++)
{
strs[j]=new String(Arrays.copyOfRange(chars,i,i+len));
}
System.out.println(Arrays.toString(strs))
Переменнаяlen указывает длину блоков (ваш n). Установите желаемое число в числовую переменную.
Вот небольшой пример того, как это можно легко сделать.
public static void main(String[] args) {
Integer sizeOfChunks = 2;
Integer convertThisToBytes = 1234;
List<String> sequenceOfBitChunks = new ArrayList<String>();
String binaryRepresentation = Integer.toBinaryString(convertThisToBytes);
System.out.println(binaryRepresentation);
for(int i = 0; i + sizeOfChunks <= binaryRepresentation.length(); i = i + sizeOfChunks){
sequenceOfBitChunks.add(binaryRepresentation.substring(i, i + sizeOfChunks));
}
System.out.println(Arrays.toString(sequenceOfBitChunks.toArray()));
}
Выход:
10011010010
[10, 01, 10, 10, 01]
если sizeOfChunks = 3
выход становится
10011010010
[100, 110, 100]