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

时间:2010-04-20 05:31:14

标签: binary decimal hex

只是想知道如何将二进制转换为十六进制? 我首先要将二进制转换为十进制,然后转换为十六进制吗?

例如,101101001.101110101010011

我如何将复杂的二进制文件转换为十六进制?

提前致谢

5 个答案:

答案 0 :(得分:6)

二进制数的每4位代表一个十六进制数字。因此,从二进制转换为十六进制的最佳方法是使用前导零填充二进制数,以便位数可以被4整除。

然后一次处理四位并将它们转换为单个十六进制数字:

0000 -> 0
0001 -> 1
0010 -> 2
....
1110 -> E
1111 -> F

答案 1 :(得分:4)

不,您不能转换为十进制,然后转换为十六进制,转换为数值,然后转换为十六进制。

(十进制也是一个数字的文本表示,就像二进制和十六进制。虽然默认使用十进制表示,但数字本身没有文本表示。)

由于十六进制数字对应四个二进制数字,您不必将整个字符串转换为数字,您可以一次执行四个二进制数字。

首先填写二进制数,使其具有四位数的完整组:

  

000101101001.1011101010100110

然后你可以将每个组转换为数字,然后转换为十六进制:

  

0001 0110 1001.1011 1010 1010 0110

     

169.BAA6

或者,您可以将数字拆分为句点之前和之后的两个部分,并将其转换为二进制。期间之前的部分可以直接转换,但之后的部分必须填充正确。

C#中的示例:

string binary = "101101001.101110101010011";

string[] parts = binary.Split('.');
while (parts[1].Length % 4 != 0) {
  parts[1] += '0';
}

string result =
  Convert.ToInt32(parts[0], 2).ToString("X") +
  "." +
  Convert.ToInt32(parts[1], 2).ToString("X");

答案 2 :(得分:2)

您可以简单地使用一个小的哈希表,或其他映射将每个二进制数字四元组(作为字符串,假设是您的输入)转换为输出字符串的相应十六进制数字(0到9,A到F)。你必须将输入位加起来4,在'。'之前左边填充。并且在它之后右边填充,在两种情况下根据需要为0。

所以...

  1. 找到'。'

  2. 左边的'。',串起4,左边填充最后一束,向左走:在你的例子中,1001最左边,然后0110,最后{{1} }(左边填充),就是这样;

  3. 同上 - 在您的示例中0001,然后是1011,然后是1010,最后是1010(右边填充)

  4. 每组4个二进制数字,通过散列或其他形式的散列,变成十六进制数字,放在输出字符串中的那个位置。

  5. 想要一些伪代码,例如Python?

答案 3 :(得分:0)

最简单的方法,特别是如果你已经可以从二进制数字转换为内部数字表示,从内部数字表示转换为十六进制数字,则是二进制 - >内部 - >十六进制。我说内部而不是十进制,因为即使它可以打印为十进制,它实际上是以二进制格式存储在内部。也就是说,可以直接从一个到另一个。这不适用于您的特定示例,但在许多情况下,从二进制转换为十六进制时,您可以一次转四位数,并只需在表中查找相应的十六进制值。有各种各样的转换方法。

答案 4 :(得分:0)

BIN到HEX


二进制和十六进制本身兼容。只需将4位二进制数字(位)分组并替换相应的十六进制数字。

  

更多参考资料: