【发布时间】:2021-02-21 08:51:01
【问题描述】:
我在将十六进制转换为 bin 时遇到问题,对于“y”,我替换为“C”,在 Microsoft 计算器中我收到的“1100”与下面的代码完全相同,当我在 Microsoft 计算器中替换“4”时,我收到“ 0100”当我在下面的代码中输入“4”时,我收到“0010”。如何修复此代码并像在 Microsoft 计算器中一样接收正确的值?
String string = "0x" + y;
byte[] b = string.getBytes(Charset.forName("UTF-8"));
byte x = b[2];
//System.out.println("bity1: " + ((x & 0x01) != 0) + " " + ((x & 0x02) != 0) + " " + ((x & 0x04) != 0) + " " + ((x & 0x08) != 0));
int j = (i*4);
tablica[j] = ((x & 0x01) != 0);
tablica[j+1] = ((x & 0x02) != 0);
tablica[j+2] = ((x & 0x04) != 0);
tablica[j+3] = ((x & 0x08) != 0);
System.out.println( i + " | " + tablica[j] + " " + tablica[j+1] + " " + tablica[j+2] + " " + tablica[j+3]);
decode: 040100010C000000
0 | false false false false
1 | false false true false
2 | false false false false
3 | true false false false
4 | false false false false
5 | false false false false
6 | false false false false
7 | true false false false
8 | false false false false
9 | true true false false
10 | false false false false
11 | false false false false
12 | false false false false
13 | false false false false
14 | false false false false
15 | false false false false
【问题讨论】:
-
"0x" + y不做十六进制到二进制的转换。你只是得到y的Unicode 字符的值。使用Integer.parseInt(y, 16)将y解析为十六进制。