2013-11-22 1 views
0

그래서 1과 0의 문자열을 가져 와서 문자열이 비트 문자열 인 것처럼 10 진수로 변환하려고합니다. 저는 Java에 익숙하지 않기 때문에 먼저 Python에서이 함수를 작성했습니다 (아래 참조). 그것은 완벽하게 작동합니다.BitString (Java에서 Python으로의 변환)을 만들려고 시도합니다.

def stringToBitString(bs): 
    # 
    # bs = "10101" 
    # 
    ans = 0  # 32 bits of 0 

    for bit in bs: 
     ans = (ans << 1) | (ord(bit) - ord('0')) 
    return (and) 

그러나 자바로 변환하려고 할 때, 나는 이것을 생각해 냈습니다.

public int toInt(String path) { 

    int answer = 0; 

    for(int i = 0; i < path.length(); i++) { 

     int bit = path.charAt(i); 
     answer = (answer << 1) | (bit - 0); 
    } 
    return answer;   
} 

이 방법은 int이지만 ASCII 형식입니다. 예를 들어 stringToBitString ("1")은 1을 생성하고, toInt ("1")은 48을 생성합니다. 누군가가 현재 내가 잘못하고있는 것을 말해 줄 수 있습니까?

답변

0

당신이하고있는 것은 '1' 또는 ASCII 값 4949 또는 48 결과 048'0'을 뺀 것입니다.

char bit = path.charAt(i); 
answer = (answer << 1) | (bit - '0'); 
+0

정말 고마워요! 완벽하게 작동합니다. 또한 작은 따옴표와 큰 따옴표의 차이점을 설명 할 수 있습니까? – user3015233

+0

@ user3015233 작은 따옴표를 사용하여''a'',''1'','c'', ...와 같은 문자 리터럴을 정의 할 수 있습니다. 반면에 큰 따옴표는''a ","abc ". 아마 당신을 괴롭히는 주요한 일은'파이썬'에는 문자의 개념이 없다는 것입니다. 문자열 만의 개념을 가지고 있습니다. 반면에 '자바'는 단일 문자와 문자열 사이의 차이를 만든다. – svs

관련 문제