ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Размер файла, каков он на самом деле =)
  #1  
Старый 28.11.2009, 02:23
Аватар для VERte][
VERte][
Moderator - Level 7
Регистрация: 17.05.2007
Сообщений: 220
Провел на форуме:
3013539

Репутация: 441
По умолчанию Размер файла, каков он на самом деле =)

Собственно сел тут писякать программу шифрующую/расшифровывающую файлы по алгоритму aes. Вроде как все функции написал, прогнал тест на 128 битах текста, все тип-топ, ещё пару тестов из текстов слепленных из первого, все пашет. Загоняю текстик побольше, там какое-то интервью артиста, и получаю на выходе понятное дело хню - после шифровки+расшифровки получаю только часть текста, причем размер зашифрованного текста не удовлетворяет мои представлениям о том каким он должен быть, я естественно схватился за отладчик, и вот что получил, ещё на обработки исходного текста:



как видите текст, который есть в блокнотике не совпадает с тем что VS получила, концы различаются.
Далее ещё веселее - смотрю я на размер исходного текста, на то что выдает студия и на то сколько байт я таки считал на обработке текста, получаю такую вещь:

1) что думает студия


2) что думает винда


3) и что я думаю (складываем count и writed)



И вот ещё что: в самом конце считывание остановилось где надо, появилась буковка "я", которая как я понимаю обозначила конец файла, ибо это 0xFF, что впринципе и возвращает ifstream::get() при достижении конца файла.



Так вот кто сталкивался с такими проблемами "размера файла", и если вдруг сталкивался, то как с ними бороться или с чем хотя бы они могут быть связаны? Использовал я для обработки данных файла функции класса fstream: put, get, eof.
И ещё как оказалось, функция get не считывает например 0x1A, возвращая конец файла, поэтому то у меня и терялась часть файла при шифровании-расшифровании, вот сижу думаю какие функции использовать чтоб именно считывать все байты из файла без разбора, может кто что подскажет? (пока надумываю обратиться в сторону сишного fread, и все переписывать =( )

Последний раз редактировалось VERte][; 28.11.2009 в 02:25..
 
Ответить с цитированием

  #2  
Старый 28.11.2009, 02:51
Аватар для .ATK
.ATK
Участник форума
Регистрация: 20.02.2009
Сообщений: 224
Провел на форуме:
5075819

Репутация: 274
По умолчанию

Дай исходничок, на досуге повтыкаю...
 
Ответить с цитированием

  #3  
Старый 28.11.2009, 03:43
Аватар для VERte][
VERte][
Moderator - Level 7
Регистрация: 17.05.2007
Сообщений: 220
Провел на форуме:
3013539

Репутация: 441
По умолчанию

хехе, исходник, там щас черт ногу сломит ну в принципе вот http://stream.ifolder.ru/15195470, завтра если щас и с fread, fwrite не будет работать, выложу более менее норм обработанный, щас стоит только смотреть на то каким образом определяется размер файлов в студии при использовании класса fstream

зы. впринципе fread, fwrite более результативны, но fread также вылетает встретив байт 0x1A, я в замешательстве =\

pss с 0x1a все ясно, это маркер конца файла, избежать его можно считывая в бин.режиме. В принципе все робит теперь, но все же вопрос о размере файла при работе с fstream остается
вот работающий исходник http://stream.ifolder.ru/15195870, осталось только это все заоптимайзить, ещё работы на день =)

Последний раз редактировалось VERte][; 28.11.2009 в 04:01..
 
Ответить с цитированием

  #4  
Старый 28.11.2009, 04:17
Аватар для Forcer
Forcer
Постоянный
Регистрация: 12.04.2007
Сообщений: 413
Провел на форуме:
3578578

Репутация: 275
Отправить сообщение для Forcer с помощью ICQ
По умолчанию

Тоже недавно столкнулся с таким поведением(непонятные байты из потока читаются). Ubuntu/g++. После долгого перерыва решил написать что-то на С++ - это оказалась лаба по криптографии - шифровщик файлов на основе простой сети Фейстеля. Возникла такая же проблема. Подумал что совсем забыл с++(не притрагивался года полтора - писал на java только) - погуглил, попробовал некоторые варианты - ничего не работало. После этого окончательно разочаровался в с++ как в языке программирования - слишком много времени на такую банальщину потратил и все безрезультатно - это просто позор для языка. Взял и переписал все на java - на это ушло времени в разы меньше чем гугление ошибки на с++. Все сразу заработало. На c# я уверен все так же реализуется без проблем.
 
Ответить с цитированием

  #5  
Старый 28.11.2009, 04:49
Аватар для ErrorNeo
ErrorNeo
Moderator - Level 7
Регистрация: 02.05.2009
Сообщений: 894
Провел на форуме:
4297091

Репутация: 2261


Отправить сообщение для ErrorNeo с помощью ICQ
По умолчанию

я на дельфе подобную фигню писал - пользовал посимвольное считывание, т.к. все остальные функции запарываются на отдельных спец\нечитаемых символах, если открывать файл как textfile.

хотя если открывать просто как file и использовать blockread - то вроде норм, хотя обрабатывать текст при этом не пробовал. Наверное норм будет, хз

как в СИ не знаю, но сложности с этим видимо есть везде

Последний раз редактировалось ErrorNeo; 28.11.2009 в 04:53..
 
Ответить с цитированием

  #6  
Старый 28.11.2009, 12:00
Аватар для slesh
slesh
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


Отправить сообщение для slesh с помощью ICQ
По умолчанию

вообще в Си есть такая классная фишка - тип char является числом со знаком.
типа
Код:
	char m = 0x99;
	char n = 0x20;
	
	if (n > m)
	{
		printf("n>m");
	}
выдаст n>m потому m будет считаться отрицательным и по этому при расчетах могут получаться неправильные значения. так что нужно всё считать в unsigned char

А на счет считывания файлов, то юзай функции бинорной работы с файлом или апишки - через CreateFile откроеш файл. через GetFileSize получиш размер и через ReadFile считаеш скока нужно.
 
Ответить с цитированием

  #7  
Старый 29.11.2009, 00:31
Аватар для Forcer
Forcer
Постоянный
Регистрация: 12.04.2007
Сообщений: 413
Провел на форуме:
3578578

Репутация: 275
Отправить сообщение для Forcer с помощью ICQ
По умолчанию

2slesh
интересовал чистый c++. не си, не api.
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Процесс создания программного обеспечения для распределенных вычислений (С++). c0n Difesa Авторские статьи 9 09.06.2009 16:33
Возможно увеличить максимальный размер файла? Andres Администрирование 6 31.05.2009 20:45
Как Google на самом деле хочет чтобы вы оптимизировали свой сайт HeeL SЕО - тонкости, методы раскрутки 4 15.05.2009 00:34
Каков размер? aka_k4 Болталка 2 15.03.2009 06:49
Дыра в Ie 7 на самом деле содержится вовсе не в браузере S1nt3z Защита ОС: вирусы, антивирусы, файрволы. 1 30.10.2006 13:49



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ