Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.08.2015, 10:41   #1
IT-97
 
Регистрация: 07.08.2015
Сообщений: 3
Сообщение ВЫВОД ЛЮБОГО ФАЙЛА В ВИДЕ НУЛЕЙ И ЕДИНИЦ

ЗДРАВСТВУЙТЕ! ПЫТАЮСЬ ПРИДУМАТЬ КОД, КОТОРЫЙ ПЕРЕВЕДЕТ ЛЮБОЙ ФАЙЛ В БИНАРНЫЙ КОД И ОБРАТНО (ДВЕ ПРОЦЕДУРЫ) ПРОБОВАЛ НА С++ BUILDER. ТЕКСТОВЫЕ (TXT) ПЕРЕВОЖУ НА УРА. БЕРУ НОМЕР СИМВОЛА char(0-255) И ПЕРЕВОЖУ В ДВОИЧНЫЙ КОД. А ВОТ ЧТО-ТО КРОМЕ TXT ОБРАБОТКЕ НЕ ПОДДАЕТСЯ (ОНО И ПОНЯТНО ТАМ ГОРАЗДО БОЛЬШЕ СИМВОЛОВ КОТОРЫЕ Я НЕ МОГУ ПОЧЕСТЬ НА BUILDERE wchar_t(0-65536))
МОЖЕТ Я ДУМАЮ НЕ В ТОМ НАПРАВЛЕНИИ, ПОМОГИТЕ (ПОДОЙДЁТ КОД НА ЛЮБОМ ЯЗЫКЕ, НО ЛУЧШЕ С++) ЕСЛИ ЧТО-ТО КОРЯВО СКАЗАЛ ПРОШУ ПРОСТИТЬ (Я ТОЛЬКО УЧУСЬ). ВОБЩЕМ ЛЮБОЙ ФАЙЛ ПОСЛЕ ОБРАБОТКИ ДОЛЖЕН БЫТЬ ПРИМЕРНО ТАКИМ:
00101010110100101010101001010100111 1111111010100...............
IT-97 вне форума Ответить с цитированием
Старый 07.08.2015, 10:59   #2
JUDAS
фонатик DELPHI
Форумчанин
 
Аватар для JUDAS
 
Регистрация: 14.01.2008
Сообщений: 714
По умолчанию

Цитата:
Сообщение от IT-97 Посмотреть сообщение
ПОДОЙДЁТ КОД НА ЛЮБОМ ЯЗЫКЕ
Код:
function IntToBin(value:byte):string;
var i : integer;
begin
  result :='';
  for i:=0 to 7 do
   result := '01'[byte((value and ($01 shl i))>0)+1]+result;
end;


procedure TForm1.Button1Click(Sender: TObject);
var fin, fout : TFileStream;
    buff  : array[0..1023] of byte;
    i,cnt : integer;
    s: string;
begin
  S:='';
  fin := TFileStream.Create('E:\dmp.dat', fmOpenRead);
  fout := TFileStream.Create('E:\dmp-out.dat', fmCreate);
  while fin.Position<fin.Size do
  begin
    cnt := min(sizeof(buff), fin.Size-fin.Position);
    fillchar(buff[0], sizeof(buff), 0);
    fin.Read(buff, cnt);
    for i:=0 to cnt-1 do
      S:=S + IntToBin(buff[i]);
    fout.Write(S[1], Length(S));
    S:='';
  end;
  fout.Free;
  fin.Free;
end;
95% сбоев и ошибок приложений, находится в полу метрах от монитора
JUDAS вне форума Ответить с цитированием
Старый 08.08.2015, 09:12   #3
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
ВОБЩЕМ ЛЮБОЙ ФАЙЛ ПОСЛЕ ОБРАБОТКИ ДОЛЖЕН БЫТЬ ПРИМЕРНО ТАКИМ:
00101010110100101010101001010100111 1111111010100...............
любой файл примерно такой и до, и после "обработки"! Зачем тебе это надо?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 08.08.2015, 09:31   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
ТЕКСТОВЫЕ (TXT) ПЕРЕВОЖУ НА УРА
Похвастаешься своим кодом?
Цитата:
JUDAS
ТС билдер нужен. Тему переношу.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.08.2015, 22:01   #5
Krasiosoft
Форумчанин
 
Аватар для Krasiosoft
 
Регистрация: 01.06.2015
Сообщений: 497
По умолчанию

Код:
unsigned char BinStrToByte(const char *binStr){
    unsigned char byte;
    for(int i=0;i<8;i++){
        byte<<= 1;
        if(binStr[i]=='1') byte++;
    }
    return byte;
}

void ByteToBinStr(char *binStr, unsigned char byte){
    for(int i=7;i>=0;i--){
        binStr[i] = (byte&1)?('1'):('0');
        byte>>= 1;
    }
    binStr[8]='\0';
}
BinStrToByte - переводит строку в бинарном виде в байт.
ByteToBinStr - переводит байт в строку в бинарном виде.

Функции не сложно адаптировать и для wchar_t.

Только есть проблема в функции ByteToBinStr, она не должна на последнем шагу выполнять byte>>= 1;, т.к. это можно и не делать. Пока не придумал как лучше решить эту проблему.
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).
Krasiosoft вне форума Ответить с цитированием
Старый 20.08.2015, 14:56   #6
IT-97
 
Регистрация: 07.08.2015
Сообщений: 3
По умолчанию

Спасибо всем кто мне помогал.
IT-97 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
дана строка состоящая из групп нулей и единиц. Подсчитать количества единиц в группах с нечетным количеством символов (на Delphi) ArturBattalov Помощь студентам 1 06.10.2013 16:16
массив из единиц и нулей dodomenos Паскаль, Turbo Pascal, PascalABC.NET 4 03.03.2011 00:08
Найти байтс наибольшим числом единиц и найти байт с наибольшим чилом нулей. Найти разность число единиц м Beren42 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 14.12.2010 17:44
работа с массивом нулей и единиц Rusl92 Помощь студентам 12 15.11.2009 16:20
Получите последовательность b1...bn из нулей и единиц Я_Студент Паскаль, Turbo Pascal, PascalABC.NET 2 04.07.2008 12:40