为了账号安全,请及时绑定邮箱和手机立即绑定

十六进制转二进制——java

十六进制转二进制——java

富国沪深 2022-01-06 17:34:30
我正在尝试从十六进制转换为二进制。我已经有了将十进制转换为二进制的代码,只是不知道如何从那里开始转换为二进制。public static String hexToDec(String valueIn) {    int endNum = 0;    for (int i = 0; i < valueIn.length(); i++) {                 char curDigit = valueIn.charAt(i);        endNum *= 16;             if (curDigit >= 'A' && curDigit <= 'F')                  endNum += 10 + (curDigit - 'A');        else             endNum += curDigit - '0';    }    return "" + endNum;}public static void main(String[] args) {    Scanner keyboard = new Scanner (System.in);    System.out.println("Please enter the decimal number: ");    String valueIn = keyboard.nextLine ();    String outputOut = hexToDec(valueIn);    System.out.println("The output is: " + outputOut);    }public static String decimalToBinary(int valueIn) {    int remainder, i = 0;    String binaryNum = "";    while (valueIn != 0) {        remainder = valueIn % 2;        valueIn /= 2;        binaryNum = remainder+binaryNum;    }    return binaryNum;}public static void main(String[] args) {    Scanner keyboard = new Scanner (System.in);    System.out.println("Please enter the decimal number: ");    int valueIn = keyboard.nextInt ();    String outputOut = decimalToBinary(valueIn);    System.out.println("The output is: " + outputOut);    }
查看完整描述

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());


查看完整回答
反对 回复 2022-01-06
?
侃侃无极

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;

}


查看完整回答
反对 回复 2022-01-06
?
紫衣仙女

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.

尝试实现这一点。


查看完整回答
反对 回复 2022-01-06
  • 3 回答
  • 0 关注
  • 216 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信