Java HashMap键没有输出正确的值

Java HashMap键没有输出正确的值,java,hashmap,binary,numbers,octal,Java,Hashmap,Binary,Numbers,Octal,所以,我正试图构建一个基本的程序,用于十六进制到二进制的转换,只需使用hashmap。 无论出于何种原因,每个低于“8”的键都会输出一个非二进制的值。例:5应该输出0101,但它输出65。 下面是基本的散列 map.put('1', 0001); map.put('2', 0010); map.put('3', 0011); map.put('4', 0100); map.put('5', 0101); map.put('6', 0110);

所以,我正试图构建一个基本的程序,用于十六进制到二进制的转换,只需使用hashmap。 无论出于何种原因,每个低于“8”的键都会输出一个非二进制的值。例:5应该输出0101,但它输出65。 下面是基本的散列

    map.put('1', 0001);
    map.put('2', 0010);
    map.put('3', 0011);
    map.put('4', 0100);
    map.put('5', 0101);
    map.put('6', 0110);
    map.put('7', 0111);
    map.put('8', 1000);
    map.put('9', 1001);
    map.put('A', 1010);
    map.put('B', 1011);
    map.put('C', 1100);
    map.put('D', 1101);
    map.put('E', 1110);
    map.put('F', 1111);

    System.out.println(map.get('5'));
我正在制定一个解决方案,但我真的很好奇为什么会发生这种情况。

a-原因 因为在下一行中,您使用的是八进制表示,因为您是从0开始的。在以8为基数的八进制表示法中,
0101
代表65,由于将字符5映射到该值,八进制
0101
的整数值计算如下

1*8^2+0*8^1*+1*8^0=64+0=1=65

您需要以整数格式映射值,无需使用八进制或二进制。值不会更改,但表示形式会更改

B-失败的演示代码 D-成功的演示代码
打字错误您在数字前面缺少
0x
,无法使它们成为八进制,而现在是八进制。值可能应该是字符串,例如“0101”映射应该将字符映射到字符串。您的
map
毫无意义
System.out.println(Integer.toBinaryString(Integer.parseInt(“F”,16))System.out.println(Integer.toHexString(Integer.parseInt(“1111”,2))
0101
65
package com.levo.so.maprelated;

import java.util.HashMap;
import java.util.Map;

public class HexMapFailDemo {

    public static void main(String[] args) {
        Map<Character, Integer> map = new HashMap<>();

        map.put('1', 0001);
        map.put('2', 0010);
        map.put('3', 0011);
        map.put('4', 0100);
        map.put('5', 0101);
        map.put('6', 0110);
        map.put('7', 0111);
        map.put('8', 1000);
        map.put('9', 1001);
        map.put('A', 1010);
        map.put('B', 1011);
        map.put('C', 1100);
        map.put('D', 1101);
        map.put('E', 1110);
        map.put('F', 1111);

        System.out.println(map.get('5'));
        System.out.println("Octal 101 = 8^2 + 1 = " + (8*8 + 1));
    }

}
65
Octal 101 = 8^2 + 1 = 65
package com.levo.so.maprelated;

import java.util.HashMap;
import java.util.Map;

public class HexMapSuccessDemo {

    public static void main(String[] args) {
        Map<Character, Integer> map = new HashMap<>();

        map.put('1', 1);
        map.put('2', 2);
        map.put('3', 3);
        map.put('4', 4);
        map.put('5', 5);
        map.put('6', 6);
        map.put('7', 7);
        map.put('8', 8);
        map.put('9', 9);
        map.put('A', 10);
        map.put('B', 11);
        map.put('C', 12);
        map.put('D', 13);
        map.put('E', 14);
        map.put('F', 15);

        System.out.println(map.get('5'));
    }

}
5