|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Двоичное кодирование
Здравствуйте. У меня есть исходник:
Код:
type Bits=array [0..7] of byte; procedure dec2bin(x:byte; var b:Bits); var bit,i:byte; begin for i:=7 downto 0 do begin if (x and (1 shl i))<>0 then bit:=1 else bit:=0; b[i]:=bit; end; end; procedure TForm1.Button1Click(Sender: TObject); Var f:TextFile; ch:char; b:Bits; i: Integer; s: string; begin Memo1.Clear; AssignFile(f,'12345.txt');//Связываем переменную f с выбранным файлом Reset(f);//Открываем файл для чтения while not(eof(f)) do//это условие позволяет определить конец файла begin read(f,ch);//Считываем первый символ теста {Тут вставь различные обраоботки} dec2bin(Ord(ch),b); for i:= 0 to 7 do s:= s + IntToStr(b[i]); Memo1.Lines.Add(s); {Тут вставь вывод в Memo} end; CloseFile(f);//Закрываем файл Edit1.Text:=IntToStr(Memo1.Lines.Count); end; procedure TForm1.Button2Click(Sender: TObject); begin Close; end; procedure TForm1.Button3Click(Sender: TObject); begin Memo1.Lines.SaveToFile('s.txt'); end; Который переводит символы в двоичный код. Акто мне подскажет : как сделать обратные действия? Последний раз редактировалось Admin, 19.05.2008 в 10:37. |
#2
|
|||
|
|||
Sum[n = 0..7](b(n)*2^n);
т.е. для 00001101 = 0*2^7 + 0*2^6 + 0*2^5 + 0*2^4 + 1*2^3 + 1*2^2 + 0*2^1 + 1*2^0 = 1*2^3 + 1*2^2 + 1*2^0 = 8 + 4 + 1 = 13 |
#3
|
|||
|
|||
Или в виде кода:
Код:
function BinToDec(ABin : Bits) : Integer; var I : Integer; begin Result := 0; For I := 0 To 7 Do If ABin <> 0 Then Result := Result + power(2,I); end; |
#4
|
|||
|
|||
В том то и дело, что нужно перевести символы. Приведённый мною код переводит символы в двоичный код. А функция только числа.
|