2014-04-28 3 views
-1

소수로 변환하려고합니다. 나는이 코드를 실행하려고 할 때 나는 단, 0 ~ 255의 값을 2 진수를 사용하여 한 charArray10 진수 - 문자 코드

String alphabet = "abcdefghijklmnopqrstuvwxyz"; 
alpha = alphabet.toCharArray(); 

로 변환 된 내 알파벳이 작동하지 않습니다.

private int toChar(int encryptCode){ 

    int base = 26; 
    int characterSteps = (encryptCode/255)*base; 

    char character = alpha[characterSteps]; 

    return character; 

내가 진수 (78), 255분의 78 * 26 7.95는이 알파 배열을보고 '시간'을 제공한다 (8 INT 라운드 인) 줄 것 가지고 있다고 할 수 있습니다. 그러나 모든 문자는 (encryptCode/255) * base이 의도 한대로 작동하지 않음을 의미하는 'a'를 제공합니다.

+4

'(78/255) * 26'은'(0) * 26'과 같지 않으므로 '0'입니까? – Kevin

+0

소수를 사용하지 않습니까? 이 부분을 – user2663646

+1

java101, 정수 나누기 및 변환 및 판촉에 맞게 수정하는 방법은 무엇입니까? – njzk2

답변

1

Kevin이 댓글에 있습니다.

int characterSteps = (int) (encryptCode/255.0)*base; 

int characterSteps = (encryptCode*base)/255; 
+1

고마워, 실제로 "(int) ((double) encryptCode/255) * base)"를 실행했으나 잘 작동했지만 길은 훨씬 나아졌습니다. – user2663646

0

변화

int characterSteps = (encryptCode/255)*base; 

하면 모든 작업이 완료되어 다음과 같은 수식을 정리하십시오! 255.0은 encryptCode와 base를 확장 한 다음 int로 변환합니다.

내가 진수 (78), 255분의 78 * 26 7.95은 int로 이중 플로트/절단을 초래할와 반올림하지 않습니다 캐스팅

(8 INT 라운드 인) 줄 것 가지고 있다고 할 수 있습니다. 7.95는 7이 아닌 8로 잘립니다. 정수를 반올림하려면 다음을 사용하십시오.

double x = (encryptCode/255.0)*base; 
int characterSteps = (int) Math.round(x); 

해피 코딩! :)