Консультация № 67139
15.12.2006, 17:12
0.00 руб.
0 2 2
Здравствуйте уважаемые эксперты.
Недавно задавал вопрос по переводу из двоичной в восьмеричную СС.
Тут назрел еще вопрос, как из шестнадцатиричной СС перевести в двоичную, разумеется минуя 10 и вообще все что ток мона миную. Т.е. на прямик.

Спс. всем за ответы, за каждый ответ поставлю пять:) тем кто разумеется поможет.

Обсуждение

Неизвестный
15.12.2006, 17:42
общий
это ответ
Здравствуйте, Sarymian!
Каждая цифра в 16-ой системе будет представлена четырьмя в двоичной. Соответственно нужно с конца перебирать цифры, выделяя в результирующей строке под каждую 4 символа, и в это место записывать единицы и нули (можно создать массив соответствия и перебирать его). После этого нужно не забыть удалить нули в начале (если они есть конечно!) Удачи!
Неизвестный
15.12.2006, 22:16
общий
это ответ
Здравствуйте, Sarymian!

Вот предлагаю Вам рассмотреть такой метод перевода из Hex в Bin.
На мой взгляд весьма оригинален...

<font color=purple>Причем предусмотрен вариант когда в числе записаном 16-ричной записью используются не большие буквы (A..F), но и маленькие (a..f).</font>

Good Luck!!!

Приложение:
const masBin: array[0..15] of string[4]= (‘0000‘,‘0001‘,‘0010‘,‘0011‘, ‘0100‘,‘0101‘,‘0110‘,‘0111‘, ‘1000‘,‘1001‘,‘1010‘,‘1011‘, ‘1100‘,‘1101‘,‘1110‘,‘1111‘); var c16,c2:string; i:integer; begin write(‘HEX=‘);read(c16); c2:=‘‘; for i:=1 to length(c16) do begin case ord(c16[i]) of 48..57: c2:=c2+masBin[ord(c16[i])-48]; //для 0..9 65..70: c2:=c2+masBin[ord(c16[i])-55]; //для A..F 97..102: c2:=c2+masBin[ord(c16[i])-87]; //для a..f end; end; write(‘BIN=‘,copy(c2,pos(‘1‘,c2),length(c2)-pos(‘1‘,c2)+1));//выводим число без ведущих нулей readln; readln; end.
Форма ответа