在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])+“”;
答
如何
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()检查此截断长度以及您希望有前导零的长度之间的差异。然后,将该差异与名为时间的变量一起使用,以使内部循环在附加截断部分之前多次添加零。
在我看来,你需要考虑的第一件事是你想要使用的编码。例如,你想要输出什么? –
你的问题是你需要填充。看到这个问题https://*.com/questions/4421400/how-to-get-0-padded-binary-representation-of-an-integer-in-java –
乔恩:可能:-) – GhostCat