3 回答
TA贡献1863条经验 获得超2个赞
您可以简单地定义自己的映射,并根据评论完全跳过十进制转换路线。
HashMap<char, String> mapping = new HashMap<char, String>();
mapping.put('0', "0000" );
mapping.put('1', "0001" );
mapping.put('2', "0010");
mapping.put('3', "0011");
mapping.put('4', "0100" );
mapping.put('5', "0101");
mapping.put('6', "0110");
mapping.put('7', "0111");
mapping.put('8', "1000");
mapping.put('9', "1001");
mapping.put('a', "1010");
mapping.put('b', "1011");
mapping.put('c', "1100");
mapping.put('d', "1101");
mapping.put('e', "1110");
mapping.put('f', "1111");
然后可以这样做:
String hexValue = "something";
StringBuilder result = new StringBuilder();
for (char c : hexValue) {
// need to do some error checking here.
result.append(mapping[Character.toLowerCase(c)]);
}
System.out.prinltn(result.ToString());
TA贡献2051条经验 获得超10个赞
虽然我不想在你目前的方法之间打断,但我会从评论中说,要将十进制转换为二进制,你所要做的就是一次又一次地获得数字的模数,然后将它们结合起来全部以相反的顺序得到你的二进制数。
这将是一个更长的方法,所以我想说你可以从下面的代码中获得灵感。
BigInteger.toString(radix)会做你想做的。只需传入 2 的基数。在此处阅读更多相关信息。
static String hexToBin(String s) {
return new BigInteger(s, 16).toString(2);
}
BigInteger 确保大数字在转换过程中没有问题,但您也可以使用下面的这段代码,这个简单确实标志着您更好地理解了转换。
String hexToBinary(String hex) {
int i = Integer.parseInt(hex, 16);
String bin = Integer.toBinaryString(i);
return bin;
}
TA贡献1839条经验 获得超15个赞
举个例子。
什么是 4B5(十六进制)?
“4”在“16×16”的位置,所以表示4×16×16
“B”(11)在“16”的位置,所以这意味着 11 ×16
“5”位于“1”位置,因此表示 5。
答案: 4B5 = 4×16×16 + 11×16 + 5 (=1205) 十进制
然后将十进制数转换为二进制数。
如何将十进制转换为二进制
转换步骤:
将数字除以 2。
获取下一次迭代的整数商。
获取二进制数字的余数。
重复上述步骤,直到商等于 0。
(1205) in Decimal= (10010110101) in Binary.
尝试实现这一点。
添加回答
举报