将二进制转换为hex到小数

我有二进制数1010 1011.我知道这是hex的AB,我知道A = 10,B = 11十进制。 但是如何从十进制的10和11到最终的171?

用hex我会做的

AB 0xAB = (10 * 16^1) + (11 * 16^0) = 171 

我可以用十进制数做类似的事情从10和11到171吗? 基本上,我只是在寻找一种快速的方法来转换任何二进制数而无需计算器。

我不认为有比A×16 + B更容易的方法。

根据您要执行的操作以及您使用的语言,您可以使用shift-left运算符并将值相加。

在C ++中:

 unsigned short val_a = (0x1010 << 4); unsigned short val_b = 0x1011; unsigned short result = val_a + val_b; 

结果仍然是unsigned short int。

在C中,如果乘法从A和B得到AB,你可以改为:

 int number = A << 4 + B; 

如果您将A存储为1010(十进制)而B存储为1011,则可以转换:

 int bin2dec(unsigned int s){ int v, p; for (v = 0, p = 1; s > 0; s=s>>1) { v = v+p*(s%2); v++; p*=2;} return v; } int number = bin2dec(A) << 4 + bin2dec(B);