Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.11.20;
Скачать: CL | DM;

Вниз

Пррверьте пожалуйста есть ли ошибки   Найти похожие ветки 

 
Hamertime   (2005-10-25 18:30) [0]

ниже написан исходник для расшифровки двоичного кода проверьте плиз правильно или нет
function GetCharFromBinary(const s : string) : char;
var i : integer;
   a : byte;
begin
   a := 0;
   for i := 1 to length(s) do
    if s[i] = "1" then a := a + Binary[i];
   Result := chr(a)
end;

function GetTextFromBinary (const s : string) : string;
var i : integer;
begin
   if length(s) mod 8 > 0 then Exception.Create("Eaeoa ia ?a!");
   SetLength(Result, length(s) div 8);
   for i := 1 to length(Result) do
     Result[i] := GetCharFromBinary(Copy(s,(i-1) shl 3 + 1,8))
end;

вот вроде так будет не могли проверить правильно или нет а то нету делфи


 
pasha_golub ©   (2005-10-25 18:43) [1]


>  if length(s) mod 8 > 0


Я бы тут впереди нулей добавлял сам.


> Binary[i];


А это простите, что за структура такая?


 
Defunct ©   (2005-10-25 19:17) [2]

> Hamertime

Намудрили Вы тут что-то:
if s[i] = "1" then a := a + Binary[i];

i - индекс символа в строке, какое отношение он имеет к некой структуре Binary?

Полагаю должно было быть хотя бы так:

if S[i] = "1" then
  a := (a shl 1) + 1
else
  if S[i] = "0" then
     a := (a shl 1)
  else
     raise EConvertError.Create( "Wrong binary data at pos: "+IntToStr(i) );

опять же нет проверки, при переводе из бинарной строки в Char:
function GetCharFromBinary(const s : string) : char;
...
if Length(S) > 8 then
 raise ....



Страницы: 1 вся ветка

Текущий архив: 2005.11.20;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.049 c
2-1131051559
StasStas
2005-11-03 23:59
2005.11.20
Не знаю как сделать.Функция доканает !


3-1128580093
MVVD
2005-10-06 10:28
2005.11.20
Принтер и быстродействие


2-1130853359
3JIO
2005-11-01 16:55
2005.11.20
Базы


14-1130305048
SergP.
2005-10-26 09:37
2005.11.20
СПАМ. Что делать?


14-1130506982
Руслан
2005-10-28 17:43
2005.11.20
Можно ли узнать