【发布时间】:2014-07-15 13:27:45
【问题描述】:
我现在正在进行加密,在第 7 步中,我需要将 HEX 字符串数组(我已从 ASCII 转换为字符串数组)转换为二进制字符串。
public static void main(String[] args) {
System.out.println("HEX to Binary: ");
String[] stringHextoBinary = new String[HS.length]; //HS is the String Array for Hex numbers that i save from last step
StringBuilder builder = new StringBuilder();
int l = 0;
for(String s : HS) {
builder.append(s);
if (s.length()<=1){
stringHextoBinary[l] = HexToBinary(s.charAt(0));
l++;
System.out.print(HexToBinary(s.charAt(0)) + ",");
}else{
stringHextoBinary[l] = HexToBinary(s.charAt(0))+HexToBinary(s.charAt(1));
l++;
System.out.print(HexToBinary(s.charAt(0))+HexToBinary(s.charAt(1))+",");
}
public static String HexToBinary(char Hex) {
int i = Integer.parseInt(Character.toString(Hex), 16);
String Bin = Integer.toBinaryString(i);
return Bin;
}
}
if 语句可以与 HEX 一起使用,当它有一个数字或两个数字时。 但我的问题是它打印出来 十六进制转二进制: 11100,111,111,10111,11101, 它失去了0。 :(
这样当我加密单词“apple”并用相同的代码解密时,将返回单词“pppxl”:(
希望我能尽快得到答复,非常感谢!
【问题讨论】:
-
十六进制字符串数组是“34 7 7 b1 35”
-
我尝试了一些将十六进制转换为二进制的网络工具,结果应该是“00110100 01110111 10110001 00110101”
-
在我的答案中添加了一些代码以正确填充二进制字符串,借用大卫所说的。
-
废弃了大卫的代码并添加了一些我自己的。如果您想尝试一下,我相信它会为您服务。
标签: java encryption binary hex