2014-04-28 54 views
-1

我想將小數轉換爲字符。 我有我的字母已被轉換爲charArray十進制字符編碼

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

我是用二進制數所以只能從0到255的值,但是當我嘗試執行此代碼,這是行不通的。

private int toChar(int encryptCode){ 

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

    char character = alpha[characterSteps]; 

    return character; 

可以說我有小數78,二百五十五分之七十八* 26將使7.95(即INT回合​​8) 應該查找阿爾法陣列,並給予「H」。但是每個字符都給出'a',意思是(encryptCode/255)*基地不按預期工作。

+4

'(78/255)* 26'是否等於'(0)* 26',等於'0'? – Kevin

+0

它不使用小數?我將如何修改它以適應這個 – user2663646

+1

java101,關於整數除法和轉換和促銷的章節。 – njzk2

回答

1

凱文是正確的評論。嘗試重新安排你的公式是這樣的:

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

謝謝,我實際上做了「(int)(((double)encryptCode/255)* base)」,它的效果很好,但你的方式更好。 – user2663646

0

變化

int characterSteps = (encryptCode/255)*base; 

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

和你做! 255.0會導致加密代碼和基地變寬,然後轉換爲int。

可以說我有小數78,二百五十五分之七十八* 26將使7.95(即INT回合​​8)

鑄造浮點/雙精度爲int將導致截斷,而不是四捨五入。 7.95將被截斷爲7而不是8.要舍入整數,請使用:

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

快樂編碼! :)