Comment puis-je obtenir le 4bit à partir de données 16 bits?

Sajal Singh:

Je méthode getShort () de ByteBuffer pour me une courte valeur, je me suis converti en un int et imprimé la valeur binaire, ce qui est une donnée 16bit, j'ai besoin d'accéder à la valeur int du 4bit à partir de ces données 16bit.

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

Je dois obtenir la valeur entière pour la 4bit de départ qui dans mon cas est 1011, Comment puis-je masquer ces 16 bits pour obtenir 4bit grignotage?

Avi:

Essaye ça:

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

Production:

1011000000000000
1011

Tout d'abord, on masque les 4 bits à partir avec bitmask 0xF000 (binaire 0b1111_0000_0000_0000). Ensuite, on passe les bits résultant du droit de 12, pour se débarrasser des zéros « connus » à la fin.

Edit: Comme @CarlosHeuberger si gentiment fait, vous ne même pas besoin de faire une &opération, car >>tronque loin tous les bits côté droit par défaut. Alors, faites ceci:

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

Production:

1011

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=313922&siteId=1
conseillé
Classement