Преобразование двоичного в шестнадцатеричное?

Просто интересно, как бы я пошел о преобразовании двоичного в шестнадцатеричное ?? Должен ли я сначала преобразовать двоичные числа в десятичные, а затем в шестнадцатеричные?

Например, 101101001.101110101010011

Как бы я мог преобразовать сложный двоичный файл, такой как выше, в шестнадцатеричный?

заранее спасибо

 TheCodeArtist20 апр. 2010 г., 07:45
@Andreas. Это дробное число ...
 TheCodeArtist20 апр. 2010 г., 08:51
@Andreas. ой. хорошо-хорошо. :) понял. Боббер плз уточни ....
 Andreas Brinck20 апр. 2010 г., 07:46
@ CVS-2600Hertz-WordPress-Com Как вы знаете?
 TheCodeArtist20 апр. 2010 г., 07:42
... и какой язык вы используете, это C?
 TheCodeArtist20 апр. 2010 г., 08:12
@ Андреас Ну ... я видел дробные двоичные числа раньше и "." был использован для отделения "целочисленной части" от "дробной части" ...
 Andreas Brinck20 апр. 2010 г., 08:46
@ CVS-2600Hertz-wordpress-com Я не говорю, что это не может быть дробным числом, я просто говорю, что это только одна из нескольких возможностей. Пока ОП не разъяснит это, нет способа узнать, что означает "." представляет собой.
 TheCodeArtist20 апр. 2010 г., 07:34
бинарный U имеет строку, содержащую биты? Хотите ли вы иметь строку, содержащую шестнадцатеричные значения того же значения, что и двоичный файл? .. это что ?? ...
 Andreas Brinck20 апр. 2010 г., 07:43
Это '.' в двоичном числе над опечаткой, если нет, что он представляет?
 Warty20 апр. 2010 г., 08:10
Просто конвертировать в int -> 4 байта -> 8 nyybles ...? Byte-> Nybble - это простое AND, за которым следует битовое смещение

Ответы на вопрос(5)

ким образом, лучший способ преобразовать двоичное число в шестнадцатеричное - это заполнить двоичное число начальными нулями, чтобы число бит делилось на четыре.

Затем вы обрабатываете четыре бита за раз и конвертируете их в одну шестнадцатеричную цифру:

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

особенно если вы уже можете преобразовать двоичные цифры во внутреннее числовое представление и из внутреннего числового представления в шестнадцатеричные цифры, - это перейти в двоичный код -> внутренний -> шестнадцатеричный. Я говорю «внутренний», а не «десятичный», потому что, хотя он может печататься как десятичный, на самом деле он хранится внутри в двоичном формате. Тем не менее, можно перейти прямо от одного к другому. Это не относится к вашему конкретному примеру, но во многих случаях при преобразовании из двоичного в шестнадцатеричное вы можете использовать четыре цифры за раз и просто искать соответствующие шестнадцатеричные значения в таблице. Есть разные способы конвертации.

BIN to HEX

е 4 двоичные цифры (биты) и подставьте соответствующую шестнадцатеричную цифру.

Больше ссылки здесь:

http://en.wikipedia.org/wiki/Hexadecimal#Binary_conversion

преобразующее каждый квадруплет двоичных цифр (в виде строки, предполагая, что это ваш ввод) в соответствующую шестнадцатеричную цифру (от 0 до 9, от A до F) для выходной строки. Вам нужно скомпоновать входные биты на 4, добавив слева перед '.' и правый отступ после него, с 0 в обоих случаях, по мере необходимости.

Так...:

найдите «.»

слева от '.', связка на 4, заполнение слева последней связкой, переход влево: в вашем примере1001 самый левый, то0110, в конце концов0001 (слева), вот и все;

то же самое вправо - в вашем примере1011, затем1010, затем1010, в конце концов0110 (Правая обивка)

каждая группа из 4 двоичных цифр, через хэш или другую форму хеширования, превращается в шестнадцатеричную цифру, чтобы поместить это место в выходную строку.

Хотите какой-нибудь псевдокод для этого, например, Python?

вы не преобразуете в десятичное и затем в шестнадцатеричное, вы преобразуете в числовое значение, а затем в шестнадцатеричное.

(Десятичное также является текстовым представлением числа, точно так же, как двоичное и шестнадцатеричное. Хотя десятичное представление используется по умолчанию, число само по себе не имеет текстового представления.)

Поскольку шестнадцатеричная цифра соответствует четырем двоичным цифрам, вам не нужно преобразовывать всю строку в число, вы можете сделать это по четыре двоичных цифры за раз.

Сначала заполните двоичное число, чтобы оно имело полные группы из четырех цифр:

+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");

Ваш ответ на вопрос