[英]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.