只是想知道如何将二进制转换为十六进制? 我首先要将二进制转换为十进制,然后转换为十六进制吗?
例如,101101001.101110101010011
我如何将复杂的二进制文件转换为十六进制?
提前致谢
答案 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。
所以...
找到'。'
左边的'。',串起4,左边填充最后一束,向左走:在你的例子中,1001
最左边,然后0110
,最后{{1} }(左边填充),就是这样;
同上 - 在您的示例中0001
,然后是1011
,然后是1010
,最后是1010
(右边填充)
每组4个二进制数字,通过散列或其他形式的散列,变成十六进制数字,放在输出字符串中的那个位置。
想要一些伪代码,例如Python?
答案 3 :(得分:0)
最简单的方法,特别是如果你已经可以从二进制数字转换为内部数字表示,从内部数字表示转换为十六进制数字,则是二进制 - >内部 - >十六进制。我说内部而不是十进制,因为即使它可以打印为十进制,它实际上是以二进制格式存储在内部。也就是说,可以直接从一个到另一个。这不适用于您的特定示例,但在许多情况下,从二进制转换为十六进制时,您可以一次转四位数,并只需在表中查找相应的十六进制值。有各种各样的转换方法。
答案 4 :(得分:0)
二进制和十六进制本身兼容。只需将4位二进制数字(位)分组并替换相应的十六进制数字。
更多参考资料: