我正在处理一个项目,我不得不将十六进制字符串转换为二进制字符串我使用了很多方法,但下面的代码对我来说最有用,尽管这段代码创建了一个未知的十六进制数字“l”看起来像1但不是一个,有人知道这是什么(l)?它是如何出现以及如何修复它并将其转换为“1”?
public String hexToBin(String hex){
String bin =new String();
String binFragment =new String();
int iHex;
hex = hex.trim();
hex = hex.replaceFirst("0x","");
for(int i = 0; i < hex.length(); i++){
iHex = Integer.parseInt(""+hex.charAt(i),16);
binFragment = Integer.toBinaryString(iHex);
while(binFragment.length() < 4){
binFragment = "0" + binFragment;
}
bin += binFragment;
}
答案 0 :(得分:0)
使用BigInteger.toString(radix)。基数是你想要使用的基础。所以使用二进制,也称为base2,填写2。
static String hexToBin(String s) {
return new BigInteger(s, 16).toString(2);
}
答案 1 :(得分:0)
您应该使用Integer.decode()
代替Integer.parseInt()
,因为它也会处理十六进制字符串。
看到; http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html#decode(java.lang.String)