将二进制转换为十六进制到十进

时间:2012-03-24 15:31:17

标签: c binary hex decimal

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

使用hex我会做

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

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

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:0)

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

在C ++中:

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

结果仍然是unsigned short int。

答案 2 :(得分:0)

在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);