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

时间:2017-05-25 12:53:03

标签: java javafx

我有一个代码可以将英文字母值转换为二进制代码(a - > 01100001)。代码工作正常,但有一个例外。当转换后出现结果时,它缺少" 0"在前面。例如:a - > 1100001.无论是否使用小写字母的大写,它都会这样做。

为什么这样做?我需要的只是前面的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;
}

}

解决方案:添加&#34; 0&#34;在转换结果前面。     结果+ =&#34; 0&#34; + Integer.toBinaryString(messChar [i])+&#34; &#34 ;;

1 个答案:

答案 0 :(得分: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;
}

为方便起见,我只将局部变量 size 设置为8。但它可以设置为您想要的,也可以通过方法中的参数设置。 大小等于你想要的时间。 8表示8位= 1字节。

如JB Nizet所说,Integer.toBinaryString不会添加前导0。它将其截断为最重要的位。 0000 1001变为1001, 0001 0001变为10001 等

size - initial.length()检查此截断长度与前导零的所需长度之间的差异。然后将该差异与名为 times 的变量一起使用,以使内部循环在附加截断的部分之前多次添加零。