Другие языки программирования и технологии
Надо написать код в программе делфи
Дана строка, представляющая собой запись числа в двоичной системе счисления. Преобразовать ее в строку, представляющую собой запись числа в шестнадцатиричной системе счисления
Способ номер один:
Сначала проверяете, что во входной строке только символы "0" или "1".
Дописываете нуль в начале строки до тех пор, пока длина строки не будет кратна 4.
Потом делите строку по 4 символа - это будет одна hex-цифра.
Потом каждые 4 символа заменяете на одну hex-цифру.
Способ номер два:
Сначала проверяете, что во входной строке только символы "0" или "1".
Каждый бит, начиная с конца, нумеруется от 0 до n-1 (где n - это длина входной строки), потом представляете каждый бит в виде степени двойки 2^i, складываете все биты, получаете десятическое представление числа. Потом аналогичным образом делаете степени 16 и переводите в hex.
Сначала проверяете, что во входной строке только символы "0" или "1".
Дописываете нуль в начале строки до тех пор, пока длина строки не будет кратна 4.
Потом делите строку по 4 символа - это будет одна hex-цифра.
Потом каждые 4 символа заменяете на одну hex-цифру.
Способ номер два:
Сначала проверяете, что во входной строке только символы "0" или "1".
Каждый бит, начиная с конца, нумеруется от 0 до n-1 (где n - это длина входной строки), потом представляете каждый бит в виде степени двойки 2^i, складываете все биты, получаете десятическое представление числа. Потом аналогичным образом делаете степени 16 и переводите в hex.
uses System;
function BinaryToHex(const binaryString: string): string;
var
num: Integer;
begin
num := StrToInt(binaryString);
Result := IntToHex(num, 0);
end;
var
binaryString: string;
hexString: string;
begin
binaryString := '11010101';
hexString := BinaryToHex(binaryString);
WriteLn(hexString);
end.
uses
System.SysUtils,
System.Classes;
var
s, st: string;
i: integer;
arr: TBytes;
begin
read(s);
if length(s) mod 8 > 0 then
for i := 1 to 8 - (length(s) mod 8) do
s := #$30 + s;
while length(s) > 0 do
begin
st := copy(s, 1, 8);
SetLength(arr, length(arr) + 1);
for i := 1 to 8 do
if st[i] = #$31 then
arr[high(arr)] := arr[high(arr)] + (128 shr (i - 1))
else if st[i] #$30 then
begin
writeln('Неправильный ввод');
Abort;
end;
delete(s, 1, 8);
end;
SetLength(st, length(arr) * 2);
BinToHex(arr, pchar(st), length(arr));
writeln(st);
end.
Похожие вопросы
- Помогите написать код для программы...
- Код для программы в Делфи
- Можно ли более лаконично написать код этой маленькой программы ?
- Помогите пожалуйста напишите код программы
- как запретить второй запуск программы (Делфи) Добрый день всем, как запретить второй запуск своей программы
- кто напишет код. программа на с++
- Как понять машинный код ?(Компилятор переводит исходный код компьютерной программы в машиный код).
- Всем привет! программа Делфи
- Программа-эта и есть программный код тоесть программный код является программой
- Напишите пожалуйста код простейшей программы вычисления значения 2 в степени N.