在Java中的任何字符串值到二进制转换

问题描述:

我有一个代码可以将英文字母值转换为二进制代码(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://*.com/questions/4421400/how-to-get-0-padded-binary-representation-of-an-integer-in-java –

+0

乔恩:可能:-) – GhostCat

如何

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()检查此截断长度以及您希望有前导零的长度之间的差异。然后,将该差异与名为时间的变量一起使用,以使内部循环在附加截断部分之前多次添加零。