Java HashMap键没有输出正确的值
所以,我正试图构建一个基本的程序,用于十六进制到二进制的转换,只需使用hashmap。 无论出于何种原因,每个低于“8”的键都会输出一个非二进制的值。例:5应该输出0101,但它输出65。 下面是基本的散列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);
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))八进制中的code>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