2013-02-14 2 views
-1

각 비트가 참 또는 거짓으로 표시되는 12 비트 값을 출력하는 ADC가 있습니다. 이것을 어떻게 int로 변환 할 수 있습니까? 예를 들어두 개의 6 비트 2 진 값을 12 비트 2 진 값에 결합하여 int로 변환하는 방법은 무엇입니까?

:

12 비트 값은 이것에 대해 이동하는 방법을 111,111,000,001

//getLevel returns true or false 
boolean bit0 = getLevel(channel0);//true 
boolean bit1 = getLevel(channel1);//true 
boolean bit2 = getLevel(channel2);//true 
boolean bit3 = getLevel(channel3);//true 
boolean bit4 = getLevel(channel4);//true 
boolean bit5 = getLevel(channel5);//true 
boolean bit6 = getLevel(channel6);//false 
boolean bit7 = getLevel(channel7);//false 
boolean bit8 = getLevel(channel8);//false 
boolean bit9 = getLevel(channel9);//false 
boolean bit10 = getLevel(channe10);//false 
boolean bit11 = getLevel(channe11);//true 


///do something to convert bit0 - bit11 to an int == 4033 

어떤 아이디어인가?

답변

1

BitSet에 비트를 저장하십시오.

BitSet bits = new BitSet(); 
//set the bit fields... 

//convert bitset to integer 
int bitInteger = 0; 
for(int i = 0 ; i < bits.length(); i++) { 
    if(bits.get(i)) { 
     bitInteger |= (1 << i); //logical OR each bit into the integer and shift left 
    } 
} 
+0

고마워요, 그게 내가 찾고 있던 것이 었습니다! 나는 투표 할 것이지만 아직 충분한 담당자가 없습니다. – user2041469