将hex字符串转换为二进制

我想将hex字符串转换为二进制字符串。 例如,Hex 2是0010.下面是代码:

String HexToBinary(String Hex) { int i = Integer.parseInt(Hex); String Bin = Integer.toBinaryString(i); return Bin; } 

但是这只适用于Hex 0 – 9; 它不适用于Hex A – F,因为它使用int 。 谁能增强它?

你需要告诉Java int是hex的,如下所示:

 String hexToBinary(String hex) { int i = Integer.parseInt(hex, 16); String bin = Integer.toBinaryString(i); return bin; } 

接受的版本仅适用于32位数字。

这是一个适用于任意长hex字符串的版本:

 public static String hexToBinary(String hex) { return new BigInteger(hex, 16).toString(2); } 

您需要使用其他Integer.parseInt()方法。

 Integer.parseInt(hex, 16); 

以下是我为操作hex,明文和二进制文件而编写的一些例程,希望它们有所帮助。 由于我从这些主题中借鉴了想法,我想我会分享。

 public static String zero_pad_bin_char(String bin_char){ int len = bin_char.length(); if(len == 8) return bin_char; String zero_pad = "0"; for(int i=1;i<8-len;i++) zero_pad = zero_pad + "0"; return zero_pad + bin_char; } public static String plaintext_to_binary(String pt){ return hex_to_binary(plaintext_to_hex(pt)); } public static String binary_to_plaintext(String bin){ return hex_to_plaintext(binary_to_hex(bin)); } public static String plaintext_to_hex(String pt) { String hex = ""; for(int i=0;i 

}

接受的答案仅适用于32位值,备用BigInteger版本会截断二进制字符串中的前导零! 这是一个应该适用于所有情况的函数。

 public static String hexToBinary(String hex) { int len = hex.length() * 4; String bin = new BigInteger(hex, 16).toString(2); //left pad the string result with 0s if converting to BigInteger removes them. if(bin.length() < len){ int diff = len - bin.length(); String pad = ""; for(int i = 0; i < diff; ++i){ pad = pad.concat("0"); } bin = pad.concat(bin); } return bin; } 
 private static Map digiMap= new HashMap<>(); static { digiMap.put("0", "0000"); digiMap.put("1", "0001"); digiMap.put("2", "0010"); digiMap.put("3", "0011"); digiMap.put("4", "0100"); digiMap.put("5", "0101"); digiMap.put("6", "0110"); digiMap.put("7", "0111"); digiMap.put("8", "1000"); digiMap.put("9", "1001"); digiMap.put("A", "1010"); digiMap.put("B", "1011"); digiMap.put("C", "1100"); digiMap.put("D", "1101"); digiMap.put("E", "1110"); digiMap.put("F", "1111"); 

}

 static String hexToBin(String s) { char[] hex=s.toCharArray(); String binaryString=""; for(char h : hex){ binaryString=binaryString+ digiMap.get(String.valueOf(h)); } return binaryString; } 

对不起,这有点晚了。 但是,我认为我的答案是最直接和最简单的答案。

此致,YAN HANXUAN 09.02.2018