簡體   English   中英

在Java中將文本轉換為二進制

[英]Converting text to binary in java

我想將字符串的每個字符轉換為新的二進制字符串。 這是我的工作:

public static void main(String args[]) {
    String MESSAGE = "%";
    String binaryResult = "";
    for (char c : MESSAGE.toCharArray()){
        binaryResult += Integer.toBinaryString( (int) c);
    }
    System.err.println(binaryResult);
}

例如,輸入為“%”,我得到以下輸出:“ 100101”。我的問題是開頭的“ 0”已刪除……我想擁有:“ 0100101”。 有人有想法嗎?

您真正要說的是“如何將字符的二進制字符串表示形式填充到7位”?

替換此行:

binaryResult += Integer.toBinaryString( (int) c);

用這些:

String binString = Integer.toBinaryString( (int) c );
binaryResult += ("0000000" + binString).substring(binString.length());

這假定您只有7位字符...如果需要更多字符,則在“ 00000”字符串中添加0以匹配所需的字符串長度(帶有填充的0)。

我建議對您現有的代碼進行一些更改。 由於要在循環內串聯一個字符串,這將導致創建一堆新的字符串對象,因為它們是不可變的。 該問題可以通過使用StringBuilder來解決。

public static void main(String args[]) {
    String MESSAGE = "%";
    StringBuilder binaryResult = new StringBuilder();
    for (char c : MESSAGE.toCharArray()) {
        StringBuilder curValue = new StringBuilder(Integer.toBinaryString((int)c));

        // calculate padding 0 bits to fill to 8 bits
        int paddingLength = 8 - curValue.length();
        char[] paddingArr = new char[paddingLength];
        Arrays.fill(paddingArr, '0');

        // insert padding bytes to the front
        curValue.insert(0, paddingArr);

        // add to stringbuilder for `MESSAGE`
        binaryResult.append(curValue);
    }
    System.err.println(binaryResult.toString());
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM