我有一个代码可以将英文字母值转换为二进制代码(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 ;;
答案 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 的变量一起使用,以使内部循环在附加截断的部分之前多次添加零。