¿Cómo consigo la de 4 bits de datos a partir de una de 16 bits?

Sajal Singh:

Solía ​​método getShort () de ByteBuffer conseguirme un valor resumen, me convertí en un int e impreso el valor binario, que es un conjunto de datos de 16 bits, que necesitan para acceder al valor de la int 4 bits a partir de estos datos de 16 bits.

short bitRateShort = buf.getShort(32 + 2);
int bitRateInteger = Short.toUnsignedInt(bitRateShort);
System.out.println(bitRateInteger);//46144
System.out.println(Integer.toBinaryString(bitRateInteger));// 1011010001000000

Necesito obtener el valor entero de 4 bits para la partida, que en mi caso es 1011, ¿Cómo puedo ocultar este 16 bits para obtener 4 bits mordisco?

AVI:

Prueba esto:

int bitRateInteger = 46144;
System.out.println(Integer.toBinaryString(bitRateInteger&0xF000));
System.out.println(Integer.toBinaryString((bitRateInteger&0xF000)>>12));

Salida:

1011000000000000
1011

En primer lugar, enmascarar la partida 4 bits con máscara de bits 0xF000 (binario 0b1111_0000_0000_0000). Entonces, cambiamos los bits resultantes a la derecha por 12, para deshacerse de los ceros "conocidos" al final.

Editar: Como @CarlosHeuberger tan amablemente señaló, que ni siquiera es necesario hacer una &operación, porque >>truncará distancia todos los bits del lado derecho de forma predeterminada. Por lo tanto, debe hacerse lo siguiente:

int bitRateInteger = 46144;
System.out.println(Integer.toBinaryString(bitRateInteger>>12));

Salida:

1011

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=313924&siteId=1
Recomendado
Clasificación