我正在将十六进制数0XA85D10
转换为二进制。但是,我被告知您可以在不使用纸张或计算器的情况下转换此数字。
这可能吗?
谢谢
容易。十六进制数中的每个数字都转换为二进制数字中的4位数,因此您只需要知道从0到f或0000到1111的二进制数。
举个例子:
0xc3e2
c = 12 decimal = 1100
3 = 0011
e = 14 decimal = 1110
2 = 0010
然后将它们串在一起。
0xc3e2 = 1100001111100010 binary
将十六进制转换为二进制的最简单方法是将十六进制中的每个数字拆分为4位二进制数。 (即D匹配到1110)
用你的例子
A 8 5 D 1 0
1010 1000 0101 1110 0001 0000
是。有可能的。一个十六进制数字恰好是四位二进制数字。
A = 1010
8 = 1000
...等等。
如果数字大于或等于8,则从第一个二进制数字为1的数字中减去8,否则为0。
如果数字现在大于或等于4,则减去4,下一个数字输出为1,否则下一个数字输出为0。
如果数字现在大于或等于2,则减去2,下一个数字输出为1,否则下一个数字输出为0。
无论剩下什么,0或1,是剩下的数字。
您可以使用以下(十六进制 - >二进制)将十六进制转换为二进制:
0 = 0000
1 = 0001
2 = 0010
3 = 0011
4 = 0100
5 = 0101
6 = 0110
7 = 0111
8 = 1000
9 = 1001
A = 1010
B = 1011
C = 1100
D = 1101
E = 1110
F = 1111
希望这可以帮助!
public with sharing class HexToBin {
private String code;
public String result;
Map<String, String> hexToBinMap = new Map<String, String>{'0'=>'0000','1'=>'0001','2'=>'0010','3'=>'0011','4'=>'0100','5'=>'0101','6'=>'0110','7'=>'0111','8'=>'1000','9'=>'1001','A'=>'1010','B'=>'1011','C'=>'1100','D'=>'1101','E'=>'1110','F'=>'1111'};
public HexToBin(String code) {
this.code = code;
result = getResult(code);
}
private String hexToBin(String hex){
if(hex.length()==1){
return hexToBinMap.get(hex);
}
return '';
}
private String getResult (String code) {
String res ='';
for(Integer i=0; i<code.length(); i++){
res = res + hexToBin(code.substring(i,i+1));
}
return res;
}
}