перевод файла в "0" и "1"
От: Serega_mexanik Украина  
Дата: 04.12.08 22:56
Оценка:
доброго времени суток.

т.к. тупой комп не понимает ничего, кроме 0 и 1

то можно сделать из любого файла, любого формата... и что в Винде что на Линухе "00000010" = 2, те.е файл один и тот же...

нашел ресурс
http://www.cyberforum.ru/delphi-beginners/thread14612.html

не могу разобраться в паскалевском коде.


помогите придумать нечто такое-же на Сях...


P.S.
все что пришло в голову:

AnsiString Int_To_StrBin(int A)
  {
  AnsiString S = "", S1 = "";
  int I = 1;

  if (A == 0) S = "0";

  while(A > 0)
    {
    S = S + char((A % 2) + 48);//xz
                A = A/2;

    if ((I % 4) == 0)
                S = S + " ";

                I++;
    }

  if ((S.Length() % 5) == 1) S = S + "000 ";
  if ((S.Length() % 5) == 2) S = S + "00 ";
  if ((S.Length() % 5) == 3) S = S + "0 ";

  for (int I = 1; I < (S.Length() + 1); I++)
    {
    S1 = S1 + S[S.Length() + 1 - I];
    }

  return S1;
  }
Красота — в глазах смотрящего...
Re: перевод файла в "0" и "1"
От: Hruks Россия www.hruks.com
Дата: 05.12.08 04:36
Оценка: +1
Здравствуйте, Serega_mexanik, Вы писали:

S_>т.к. тупой комп не понимает ничего, кроме 0 и 1

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

S_>то можно сделать из любого файла, любого формата...

И какой формат при этом получится?

S_>...и что в Винде что на Линухе "00000010" = 2, те.е файл один и тот же...

Взять для примера файл JPG, что в Винде, что на Линухе это один и тот же файл, показываемый вьюверами как картинку.
Другой пример — музыка в mp3 — хоть в Виндовсе, хоть в Линуксе, да хоть в mp3 плеере, это файл содержащий музыку.

Попытайтесь как можно подробнее и точнее описать проблему, которая стоит перед Вами, иначе рискуете остаться без ответа.
Re[2]: перевод файла в "0" и "1"
От: DarkMaster Украина http://www.bdslib.at.ua
Дата: 05.12.08 08:25
Оценка:
Здравствуйте, Hruks, Вы писали:

H>Попытайтесь как можно подробнее и точнее описать проблему, которая стоит перед Вами, иначе рискуете остаться без ответа.


А топик стартер пытается перевести все байты в файле в их бинарное представление.
Например 05h в последовательность 00h 00h 00h 00h 00h 01h 00h 01h.
Вот только нафига это надо, если уже есть БИТЫ?
WBR, Dmitry Beloshistov AKA [-=BDS=-]
Re[2]: перевод файла в "0" и "1"
От: Аноним  
Дата: 05.12.08 16:07
Оценка:
Здравствуйте, Hruks
H>Попытайтесь как можно подробнее и точнее описать проблему, которая стоит перед Вами, иначе рискуете остаться без ответа.


необходимо открыть видео файл (*.avi, *.mpg, *.wmv...) в виде двоичного файла и загнать сие в Мемо....

но как бы продолжение программы — открыть любой файл (avi, mp3, doc, exe.....)


т.е. я с помощью OpenDialog открываю? например файл.avi, показываю красивый ProgressBar и окошко мемо забиваеться 0 и 1...
Re[3]: перевод файла в "0" и "1"
От: DarkMaster Украина http://www.bdslib.at.ua
Дата: 05.12.08 16:25
Оценка:
Здравствуйте, Аноним, Вы писали:

А>т.е. я с помощью OpenDialog открываю? например файл.avi, показываю красивый ProgressBar и окошко мемо забиваеться 0 и 1...


Ясно... Писал на коленке и не проверял!, но смысл должен быть ясен.


function Binary(L:Byte):string;
var I:Byte;
    Buf:byte;
begin
 Result:='';
 for I:=7 downto 0 do
  begin
   Buf:=1 shl i;
   if (L and Buf)<>0 then Result:=Result+'1'
   else Result:=Result+'0';
  end;
end;

procedure FileToBinStrings(FileName:string; L:TStrings);
var F:TFileStream;
    Buffer:array[0..16] of byte;
    i,Readed:integer;
    F:TFileStream;
    S:string;
begin
  L.Clear;
  F:=TFileStream.Create(FileName,rmOpenRead or fmShareDenyNone);
  try
    repeat
      Readed:=F.Read(Buffer,SizeOf(Buffer));
      S:=''; 
      if Readed>0 then 
         for i:=0 to Readed do 
             S:=S+Binary(Buffer[i])+' ';
      if S<>'' then 
         L.Add(Trim(S));  
    until (Readed=0);
  finally F.Free; end;
end;

procedure Form1.Button1Click(Sender:TObject);
begin
  FileToBinStrings('MyFile.avi', Memo1.Lines);
end;
WBR, Dmitry Beloshistov AKA [-=BDS=-]
Re[4]: перевод файла в "0" и "1"
От: Аноним  
Дата: 05.12.08 18:42
Оценка:
DM>Ясно... Писал на коленке и не проверял!, но смысл должен быть ясен.


DM>
DM>function Binary(L:Byte):string;
DM>var I:Byte;
DM>    Buf:byte;
DM>begin
DM> Result:='';
DM> for I:=7 downto 0 do
DM>  begin
DM>   Buf:=1 shl i;
DM>   if (L and Buf)<>0 then Result:=Result+'1'
DM>   else Result:=Result+'0';
DM>  end;
DM>end;

DM>procedure FileToBinStrings(FileName:string; L:TStrings);
DM>var F:TFileStream;
DM>    Buffer:array[0..16] of byte;
DM>    i,Readed:integer;
DM>    F:TFileStream;
DM>    S:string;
DM>begin
DM>  L.Clear;
DM>  F:=TFileStream.Create(FileName,rmOpenRead or fmShareDenyNone);
DM>  try
DM>    repeat
DM>      Readed:=F.Read(Buffer,SizeOf(Buffer));
DM>      S:=''; 
DM>      if Readed>0 then 
DM>         for i:=0 to Readed do 
DM>             S:=S+Binary(Buffer[i])+' ';
DM>      if S<>'' then 
DM>         L.Add(Trim(S));  
DM>    until (Readed=0);
DM>  finally F.Free; end;
DM>end;

DM>procedure Form1.Button1Click(Sender:TObject);
DM>begin
DM>  FileToBinStrings('MyFile.avi', Memo1.Lines);
DM>end;
DM>



я в паскале не силен.... но попробую...

какая разница между функцией и процедурой? Сори, посмотрю в сети
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.