只是想知道如何将二进制转换为十六进制?我首先要将二进制转换为十进制然后转换为十六进制吗?
例如,101101001.101110101010011
我如何将上面的复杂二进制转换为十六进制?
提前致谢
二进制数的每4位表示十六进制数字.因此,从二进制转换为十六进制的最佳方法是使用前导零填充二进制数,以便位数可被4整除.
然后,您一次处理四个位并将它们转换为单个十六进制数字:
0000 -> 0
0001 -> 1
0010 -> 2
....
1110 -> E
1111 -> F
Run Code Online (Sandbox Code Playgroud)
不,您不会转换为十进制,然后转换为十六进制,不会转换为数字值,然后转换为十六进制。
(十进制也是数字的文本表示形式,就像二进制和十六进制一样。尽管默认情况下使用十进制表示形式,但是数字本身并不具有文本表示形式。)
由于十六进制数字对应于四个二进制数字,因此您不必将整个字符串转换为数字,因此您一次可以将其转换为四个二进制数字。
首先填写二进制数字,以使其具有四位数的完整组:
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");
Run Code Online (Sandbox Code Playgroud)