2013-09-05 3 views
1

정수 배열을 사용하여 정수를 이진수로 변환하려고합니다. 첫 번째 변환은 올바른 변환 "11111111"을 얻은 다음 배열로 변환 할 다음 단계 인 toBinaryString입니다. 이것은 잘못되어, getChar 라인이라고 생각합니다. 내가 찾고 있어요 결과가정수를 정수 배열 또는 이진수로 변환

int x = 255; 

string=(Integer.toBinaryString(x)); 

int[] array = new int[string.length()]; 

for (int i=0; i< string.length(); i++){ 
array[i] = string.getChar(i); 

    Log.d("TAG", " Data " + array[1] "," + array[2] + "," + array[3]); 

로그 표시 (데이터 0, 0, 0) (데이터 1,1,1)

여기에 최종 코드와 그것을 작동합니다.

모든
 // NEW 
int x = 128; 

string=(Integer.toBinaryString(x)); 

int[] array = new int[string.length()]; 

for (int i=0; i < string.length(); i++) { 
array[i] = Integer.parseInt(string.substring(i,i+1)); 
} 

Log.d("TAG", "Data " + array[0] + "" + array[1]+ "" + array[2] + "" + array[3]+ " " + array[4]+ "" + array[5] + "" + array[6] + "" + array[7]); 
+0

()'가 사용할 참조니까. [0,1 & 2]와 같은 인덱스가 있기 때문에 앱이 어떻게 배열 (array) [3]을 할 때 충돌하지 않는지 궁금합니다. – Varun

+3

'String.getChar (int)'메소드가 없습니다. 'String.charAt (int index)'를 의미 했습니까? *를 컴파일하는 게시 코드 *를 사용해보십시오. –

+0

코드가 컴파일되었지만 배열 [i] = string.getChar (i); 오류가 있었기 때문에 주석 처리했습니다. 배열은 0에서 7이어야하므로 로그는 배열 [3]을 크래시하지 않아야합니다. Mattias, 형식 불일치가 발생합니다. int digits [] = new Integer [Integer.SIZE];에서 Integer []에서 int []로 변환 할 수 없습니다. – Bobby

답변

2

우선, 어레이가 대신 하나의 인덱스 0에서 시작하고, 그래서 다음의 코드 변경 :

Log.d("TAG", " Data " + array[1] "," + array[2] + "," + array[3]); 

다음과

Log.d("TAG", " Data " + array[0] "," + array[1] + "," + array[2]); 

다음의 다음 코드 줄 :

array[i] = string.getChar(i); 

당신은 (즉, "getchar가"기능이 존재하지 않는도), 당신은 대신 다음을 시도하고 정수로 값을 구문 분석 할 수있는 정수 배열로 문자 값을 얻기 위해 노력하고있다 :

array[i] = Integer.parseInt(String.valueOf(string.charAt(i))); 

나는 희망 나는 도왔다.

피씨 - String.valueOf에 대해 지적한 Hyrum Hammon에게 감사드립니다.

+1

''Integer.parseInt (String.charAt (i))); ' –

+0

'getChar'에 대해 잘 모르겠습니다. 문자열'. 또한, 'Integer.parseInt'는 소문자 "p"(Java 명명 규칙을 준수)입니다. –

+0

감사합니다. Mattias, 소문자 "p"로 수정했습니다. – MrByte

2

대해 어떻게 : 당신은`String.getChar를 호출 할 방법

array[i] = Integer.parseInt(string.substring(i,i+1)); 
5
// Take your input integer 
int x = 255; 
// make an array of integers the size of Integers (in bits) 
int[] digits = new Integer[Integer.SIZE]; 
// Iterate SIZE times through that array 
for (int j = 0; j < Integer.SIZE; ++j) { 
    // mask of the lowest bit and assign it to the next-to-last 
    // Don't forget to subtract one to get indicies 0..(SIZE-1) 
    digits[Integer.SIZE-j-1] = x & 0x1; 
    // Shift off that bit moving the next bit into place 
    x >>= 1; 
} 
+0

나는 비슷한 것을 생각하고 있었고, 단지'boolean [] '을 사용하여 비트 배열을 나타내고 [이 질문에 대한 답변 중 하나를 사용했습니다.] (http://stackoverflow.com/q/8151435)/1321716). 그러나 OP에서 명확하지 않은 결과 배열은 최소 크기를 가져야합니다 ('array = 0 '은'x == 0') 또는 고정 크기 ('array.length == Integer.SIZE' (즉, 32)). –

+0

배열이 0에서 시작한다는 것을 이해하지만 로그 참조를 위해 1,2,3에만 관심이있었습니다. 이유에 대한 아이디어 : int digits [] = new Integer [Integer.SIZE]; 오류가 발생했습니다. – Bobby