2017-05-25 40 views
-2

我有一個代碼可以將英文字母值轉換爲二進制代碼(a - > 01100001)。代碼工作正常,但有一個例外。當轉換後出現結果時,前面缺少「0」。例如:a - > 1100001.不管小寫字母是大寫還是小寫。在Java中的任何字符串值到二進制轉換

爲什麼這樣做?我需要的是在前面0。 參考:http://www.convertbinary.com/alphabet/

注意:字符串值(用戶名)是由最終用戶輸入的,而不是代碼中的自身代碼,因爲此處有些線程關於轉換顯示。

public class ConversionController { 

/** 
* The getBinaryName is used to convert string to binary form 
* 
* @param name 
*   to be converted 
* @return converted binary name 
*/ 
public String getBinaryName(String name) { 

    if (name == null || name.isEmpty()) { 
     return ""; 
    } 

    String result = ""; 
    char[] messChar = name.toCharArray(); 

    for (int i = 0; i < messChar.length; i++) { 
     result += Integer.toBinaryString(messChar[i]) + " "; 
    } 

    return result; 
} 

} 

解決方案:在轉換結果前面加上「0」。 result + =「0」+ Integer.toBinaryString(messChar [i])+「」;

+2

在我看來,你需要考慮的第一件事是你想要使用的編碼。例如,你想要輸出什麼? –

+0

你的問題是你需要填充。看到這個問題https://stackoverflow.com/questions/4421400/how-to-get-0-padded-binary-representation-of-an-integer-in-java –

+0

喬恩:可能:-) – GhostCat

回答

0

如何

public String getBinaryName(String name) { 
    String initial; 
    int size = 8; 

    if (name == null || name.isEmpty()) { 
     return ""; 
    } 

    String result = ""; 
    char[] messChar = name.toCharArray(); 

    for (int i = 0; i < messChar.length; i++) { 
     initial = Integer.toBinaryString(messChar[i]); 
     int times = size - initial.length(); 
     for(int x = 0; x < times; x++) { 
      result += "0"; 
     } 
     result += initial; 
    } 

    return result; 
} 

我只是把局部變量大小 8作爲一種方便。但它可以設置爲你想要的,也可以通過方法中的論證。 大小等於你想要它多久。 8表示8位= 1字節。

正如JB Nizet Integer.toBinaryString所述,不添加前導0。它將其截斷爲最重要的位。 0000 1001 1001變, 0001 0001 10001變等

大小 - initial.length()檢查此截斷長度以及您希望有前導零的長度之間的差異。然後,將該差異與名爲時間的變量一起使用,以使內部循環在附加截斷部分之前多次添加零。

相關問題