1 00:00:00,000 --> 00:00:02,700 [Powered by Google Translate] [Валктхроугх - Проблем Сет 4] 2 00:00:02,700 --> 00:00:05,000 [Замила Цхан - Универзитет Харвард] 3 00:00:05,000 --> 00:00:07,340 [Ово је ЦС50. - ЦС50.ТВ] 4 00:00:08,210 --> 00:00:11,670 У реду. Поздрав свима, и добродошли у Валктхроугх 4. 5 00:00:11,670 --> 00:00:14,270 >> Данас наша псет је форензика. 6 00:00:14,270 --> 00:00:18,080 Форензика је заиста забавно псет који подразумева бављење битмап фајловима 7 00:00:18,080 --> 00:00:21,550 да открије ко је починио злочин. 8 00:00:21,550 --> 00:00:24,200 Онда ћемо да промените величину неке растерске датотеке, 9 00:00:24,200 --> 00:00:27,780 онда смо и идемо да се бави заиста забавно делу званом Рецовер, 10 00:00:27,780 --> 00:00:31,160 у којима смо у суштини предали меморијску картицу 11 00:00:31,160 --> 00:00:34,350 у којој је неко случајно избрисан све своје фајлове, 12 00:00:34,350 --> 00:00:38,860 и ми смо се питали да поврати те фајлове. 13 00:00:38,860 --> 00:00:42,910 >> Али, пре него што уђемо у псет, само заиста желим да честитам свима. 14 00:00:42,910 --> 00:00:45,230 Ми смо о томе на средини овог курса. 15 00:00:45,230 --> 00:00:50,070 Квиз 0 је иза нас, а ми смо на псет4, па у суштини, ми смо на пола пута. 16 00:00:50,070 --> 00:00:55,490 Прешли смо дуг пут, ако се осврнемо уназад својим псетс, псет0 и псет1, 17 00:00:55,490 --> 00:00:57,300 па честитам се о томе, 18 00:00:57,300 --> 00:01:00,760 и ми ћемо да уђемо у неке заиста забавна ствари. 19 00:01:00,760 --> 00:01:07,070 >> Дакле, наша тоолбок за ову псет, опет, уместо трчања судо иум-и упдате, 20 00:01:07,070 --> 00:01:13,890 смо у стању да покрећу само упдате50 ако си у верзији 17,3 и изнад апарата. 21 00:01:13,890 --> 00:01:17,380 Зато будите сигурни да покренете упдате50 - то је много лакше, а неколико мање карактера - 22 00:01:17,380 --> 00:01:20,640 да се уверите да сте на најновијој верзији апарата. 23 00:01:20,640 --> 00:01:25,410 Посебно је важно да упдате50 када почнете да користите ЦС50 Провера. 24 00:01:25,410 --> 00:01:28,700 Дакле, проверите да ли сте то урадили. 25 00:01:28,700 --> 00:01:30,760 >> За све деонице за ову псет, 26 00:01:30,760 --> 00:01:34,350 ћемо се бавити датотека улаза и излаза, да поднесе И / О. 27 00:01:34,350 --> 00:01:38,140 Ми ћемо ићи преко доста програма који се баве са низовима 28 00:01:38,140 --> 00:01:40,350 указујући на фајловима и слично, 29 00:01:40,350 --> 00:01:43,050 па смо желели да се уверите да смо стварно упознати и опуштени 30 00:01:43,050 --> 00:01:47,990 бави како улазе и излазе у фајловима. 31 00:01:47,990 --> 00:01:52,080 >> У дистрибутивном кода за ову псет је фајл под цопи.ц, 32 00:01:52,080 --> 00:01:55,280 и то је оно што ћемо наћи ће бити заиста корисно за нас 33 00:01:55,280 --> 00:02:00,340 јер ћемо завршити ствари копирање цопи.ц фајл 34 00:02:00,340 --> 00:02:05,350 и само га мењају мало да би могли да постигну прва 2 дела проблема сету. 35 00:02:05,350 --> 00:02:09,030 >> И тако, онда као што сам раније поменуо, ми се суочавамо са битмапе као и ЈПЕГ. 36 00:02:09,030 --> 00:02:13,170 Дакле стварно разумевање структуре како ти фајлови су организовани, 37 00:02:13,170 --> 00:02:16,170 како стварно можемо превести 0с и 1с у Структуре 38 00:02:16,170 --> 00:02:19,040 и ствари које заиста могу да разумеју и тумаче и уређивање, 39 00:02:19,040 --> 00:02:21,000 да ће то бити веома важно, 40 00:02:21,000 --> 00:02:25,970 па иде у ЈПЕГ и битмап фајлова и разумевање структуре од оних. 41 00:02:25,970 --> 00:02:30,780 >> Псет4, као и обично, започиње одељак питања. 42 00:02:30,780 --> 00:02:36,600 Они ће се бавити фајл И / О и добили сте навикли на то. 43 00:02:36,600 --> 00:02:42,520 Тада део 1 је детективски роман, у коме сте дали битмап фајл 44 00:02:42,520 --> 00:02:45,630 који изгледа нешто као црвене тачкице свуда. 45 00:02:45,630 --> 00:02:52,180 А онда у суштини шта ћемо да урадимо јесте да овај фајл и само га изменили мало 46 00:02:52,180 --> 00:02:54,010 у верзији која може да читамо. 47 00:02:54,010 --> 00:02:56,000 У суштини, када завршимо, ми ћемо имати исти фајл, 48 00:02:56,000 --> 00:03:02,630 осим да ћемо бити у могућности да видите скривену поруку сакривену од свих тих црвеним тачкицама. 49 00:03:02,630 --> 00:03:07,310 Онда Ресизе је програм који, с обзиром на фајл 50 00:03:07,310 --> 00:03:11,490 а онда су му дали име фајла да даје и онда дати број као добро, 51 00:03:11,490 --> 00:03:16,850 ће заправо величину ту битмапу тим целобројну вредност. 52 00:03:16,850 --> 00:03:19,240 Онда на крају, имамо опорави псет. 53 00:03:19,240 --> 00:03:24,160 Добијају смо меморијску картицу, а затим да се опорави све фотографије 54 00:03:24,160 --> 00:03:25,920 које су случајно избрисане, 55 00:03:25,920 --> 00:03:31,420 Али, као што ћемо научити, не заправо избрисан и уклоњен из датотеке; 56 00:03:31,420 --> 00:03:38,470 ми смо некако изгубили где су били у фајлу, али ми ћемо да се опорави то. 57 00:03:38,470 --> 00:03:44,950 >> Сјајно. Зато је одлазак у фајлу И / О конкретно, то су читав списак функција које ћете користити. 58 00:03:44,950 --> 00:03:49,840 Већ сте видели мало основе фопен, фреад и фврите, 59 00:03:49,840 --> 00:03:54,350 али ми ћемо да погледамо даље у неки фајл И / О функције, као што су фпутц, 60 00:03:54,350 --> 00:03:56,930 у којој се само исписати један карактер на време, 61 00:03:56,930 --> 00:04:02,000 да фсеек, где некако преместите индикатор датотеке позицију напред и назад, 62 00:04:02,000 --> 00:04:05,770 и онда неки други. Али ми ћемо ићи у то касније мало током псет. 63 00:04:08,050 --> 00:04:13,100 >> Дакле, прво, само да се у фајлу / И пре него што уђемо у псет, 64 00:04:13,100 --> 00:04:19,860 да отвори датотеку, на пример, оно што треба да урадите је заправо поставили показивач на тај фајл. 65 00:04:19,860 --> 00:04:22,710 Дакле, имамо ФИЛЕ * показивач. 66 00:04:22,710 --> 00:04:27,140 У том случају, зовем га у показивача, јер то ће бити мој инфиле. 67 00:04:27,140 --> 00:04:33,340 И тако ја идем да користе фопен функцију и онда име фајла 68 00:04:33,340 --> 00:04:36,360 а онда је режим у коме ћу се бавити са датотеком. 69 00:04:36,360 --> 00:04:42,080 Тако да је "р" у овом случају за читање, "в" за писање, а затим "" за додавање. 70 00:04:42,080 --> 00:04:44,270 На пример, када имате посла са инфиле 71 00:04:44,270 --> 00:04:47,310 и све што желите да урадите је да прочитате битова и бајтова налазе тамо, 72 00:04:47,310 --> 00:04:50,420 онда вероватно ћеш желети да користите "р" као свој режим. 73 00:04:50,420 --> 00:04:54,520 Када желите да заиста писати, некако направити нову датотеку, 74 00:04:54,520 --> 00:04:57,220 онда шта ћемо да урадимо је да ћемо отворити нову датотеку 75 00:04:57,220 --> 00:05:02,410 и употребите "В" мод за писање. 76 00:05:02,410 --> 00:05:07,540 >> Дакле, када сте заправо читате у списима, структура је следећа. 77 00:05:07,540 --> 00:05:14,930 Прво се укључи показивач на струцт који ће садржати бајтове које читаш. 78 00:05:14,930 --> 00:05:19,830 Тако да ће то бити крај локација бајтова које читаш. 79 00:05:19,830 --> 00:05:23,360 Онда ћеш да укаже на величину, као основи колико бајтова 80 00:05:23,360 --> 00:05:30,100 Ваш програм треба да чита датотеке, величина основи један елемент, 81 00:05:30,100 --> 00:05:32,620 и онда ћеш да прецизира колико елемената желите да прочитате. 82 00:05:32,620 --> 00:05:34,980 И на крају, морате да знате где читате, 83 00:05:34,980 --> 00:05:37,580 тако да ће бити ваш за показивач. 84 00:05:37,580 --> 00:05:41,780 Ја бојама њих јер фреад је такође веома сличан фврите, 85 00:05:41,780 --> 00:05:47,050 осим желите да се уверите да користите исправну наредбу, 86 00:05:47,050 --> 00:05:51,960 уверите се да сте заправо писања или читања из десне фајла. 87 00:05:54,910 --> 00:05:58,610 >> Дакле, као и раније, ако имамо у виду величину елемента, као и број елемената, 88 00:05:58,610 --> 00:06:00,600 онда можемо да играмо овде мало. 89 00:06:00,600 --> 00:06:06,810 Рецимо ја имам пса струцт па онда желим да прочитам два пса истовремено. 90 00:06:06,810 --> 00:06:12,450 Шта сам могао да урадим је да каже величине једног елемента ће бити величине једног пса 91 00:06:12,450 --> 00:06:14,770 и ја ћу да прочитате двојицу. 92 00:06:14,770 --> 00:06:18,290 Алтернативно, шта сам могао да урадим је да каже само ћу да прочитам један елеменат 93 00:06:18,290 --> 00:06:21,340 и да је један елемент ће бити величине од два паса. 94 00:06:21,340 --> 00:06:24,320 Дакле, то је аналогно томе како можете некако играти са величином и бројем 95 00:06:24,320 --> 00:06:28,250 у зависности од тога шта је више интуитиван за вас. 96 00:06:28,250 --> 00:06:30,810 >> У реду. Дакле, сада долазимо до писања фајлова. 97 00:06:30,810 --> 00:06:36,880 Када желите да пишете фајл, први аргумент је заправо где читате. 98 00:06:36,880 --> 00:06:42,050 Дакле, то је у суштини подаци које ћете написати у фајлу, 99 00:06:42,050 --> 00:06:44,490 што је ван показивач на крају. 100 00:06:44,490 --> 00:06:47,670 Дакле, када имате посла са псет, уверите се да не збуне. 101 00:06:47,670 --> 00:06:50,480 Можда имају дефиниција раме уз раме. 102 00:06:50,480 --> 00:06:58,090 Можете повући дефиниције у приручнику куцајући човека и онда фврите, на пример, 103 00:06:58,090 --> 00:06:59,950 у терминалу, или можете упутити назад на овај слајд 104 00:06:59,950 --> 00:07:03,570 и проверите да ли користите прави. 105 00:07:03,570 --> 00:07:08,700 Дакле, опет, за фврите, када имате фајл који желите да запишете, 106 00:07:08,700 --> 00:07:14,290 то ће бити последњи аргумент и то ће бити показивач на тај фајл. 107 00:07:14,290 --> 00:07:18,670 Па онда је то како ћемо се бавити писањем, можда неколико бајтова у једном тренутку, 108 00:07:18,670 --> 00:07:21,820 али да желите да само пишем у само једном карактеру. 109 00:07:21,820 --> 00:07:25,940 Као што ћемо видети касније у овом примеру, у битмапе ћемо морати да користимо то. 110 00:07:25,940 --> 00:07:32,180 Тада можемо да користимо фпутц, у суштини само стављањем једне карактер на време, цхр, 111 00:07:32,180 --> 00:07:37,050 у фајл показивача, и то је наша напоље показивач тамо. 112 00:07:38,700 --> 00:07:41,560 Онда кад ми тражимо или напиши у датотеци, 113 00:07:41,560 --> 00:07:44,690 фајл праћење где смо. 114 00:07:44,690 --> 00:07:47,810 Дакле, то је врста курсора, датотека положај индикатора. 115 00:07:47,810 --> 00:07:54,330 И тако сваки пут када пишете или прочитате у датотеку, 116 00:07:54,330 --> 00:07:56,760 датотека заправо сећа где је, 117 00:07:56,760 --> 00:07:59,270 и тако се наставља одакле курсор. 118 00:07:59,270 --> 00:08:03,970 Ово може бити корисно када желите да, рецимо, читате у одређеном износу да уради нешто 119 00:08:03,970 --> 00:08:06,160 а затим прочитајте у следећем износу, 120 00:08:06,160 --> 00:08:10,700 али понекад можемо да се вратимо или заправо почињу од одређене референтне вредности. 121 00:08:10,700 --> 00:08:16,870 Дакле, онда фсеек функција, оно што ради је нам омогућава да померате курсор у одређеном фајлу 122 00:08:16,870 --> 00:08:19,680 одређени број бајтова. 123 00:08:19,680 --> 00:08:24,260 И шта онда морамо да урадимо је да одредите где је референтна вредност. 124 00:08:24,260 --> 00:08:31,520 Дакле, било да се креће напред или назад одакле се курсор тренутно је, 125 00:08:31,520 --> 00:08:35,750 или можемо навести да је то само треба да се креће у од почетка фајла 126 00:08:35,750 --> 00:08:37,090 или од краја датотеке. 127 00:08:37,090 --> 00:08:41,230 И тако да можете проћи у негативним или позитивним вредностима на износ, 128 00:08:41,230 --> 00:08:44,960 и да ће врста курсор било напред или назад. 129 00:08:46,170 --> 00:08:51,920 >> Пре него што уђемо у другим псетс, било каква питања у фајлу И / О? 130 00:08:53,860 --> 00:08:59,990 Ок. Као што смо добили у више примера, слободно ме заустави за питања. 131 00:08:59,990 --> 00:09:06,930 >> Дакле, у детективски роман, ви уручио битмап фајл сличан овом црвеном један на слајду, 132 00:09:06,930 --> 00:09:14,510 и изгледа овако - гомила црвених тачкица - и стварно не знам шта је написано. 133 00:09:14,510 --> 00:09:23,310 Ако разрокост, можда ћете моћи да видите мало плавкасто боју унутар средини. 134 00:09:23,310 --> 00:09:26,270 У суштини, то је место где се чува текст. 135 00:09:26,270 --> 00:09:30,270 Било је убиство које се догодило и морамо да сазнамо ко је то урадио. 136 00:09:30,270 --> 00:09:36,760 Да бисмо то урадили, морамо да некако претворили ову слику у читљивом формату. 137 00:09:36,760 --> 00:09:42,740 Ако ви икада наишао овај, понекад не би било мало комплети 138 00:09:42,740 --> 00:09:48,510 где би сте лупу са црвеним филма. Зна ли ко? Да. 139 00:09:48,510 --> 00:09:52,770 Тако да ће бити руку нешто овако, имати лупу 140 00:09:52,770 --> 00:09:58,130 са црвеном филм преко њега, ти би га ставио преко слике, 141 00:09:58,130 --> 00:10:03,410 а ти би могао да види поруку скривена у њему. 142 00:10:03,410 --> 00:10:07,080 Ми немамо лупу са црвеним филму, тако да уместо да идемо да некако створи сопствени 143 00:10:07,080 --> 00:10:09,060 У овом псет. 144 00:10:09,060 --> 00:10:15,760 И тако је корисник ће улаз детективски роман, онда појма, бмп., 145 00:10:15,760 --> 00:10:18,800 тако да је инфиле, то је црвена тачка порука 146 00:10:18,800 --> 00:10:23,550 и онда они кажу вердицт.бмп ће бити наш оутфиле. 147 00:10:23,550 --> 00:10:27,900 Дакле, то ће створити нову слику битмап сличан траг једног 148 00:10:27,900 --> 00:10:32,600 осим у читљивом формату где можемо видети скривену поруку. 149 00:10:32,600 --> 00:10:37,550 >> Пошто ћемо се бавити уређивање и манипулацију битмапе од неке врсте, 150 00:10:37,550 --> 00:10:42,400 ћемо врсте ронити у у структури ових битмап фајлова. 151 00:10:42,400 --> 00:10:48,130 Ми смо ишли преко ових мало у предавању, али хајде да погледамо у њих мало више. 152 00:10:48,130 --> 00:10:51,740 Сличице су у суштини само распоред бајтова 153 00:10:51,740 --> 00:10:55,790 где смо навели која бајтова значи шта. 154 00:10:55,790 --> 00:11:00,540 Дакле, овде је нешто као мапе битмап слике 155 00:11:00,540 --> 00:11:08,550 рекавши да почне са неким хеадер фајлова, почиње са неким информацијама у тамо. 156 00:11:08,550 --> 00:11:16,540 Видиш да је на око бајтова броју 14 величина је означена од битмап слике, 157 00:11:16,540 --> 00:11:18,520 и наставља се даље. 158 00:11:18,520 --> 00:11:23,810 Али шта онда смо стварно заинтересовани за ту почиње око броја 54 бајта. 159 00:11:23,810 --> 00:11:26,060 Имамо ове РГБ тројке. 160 00:11:26,060 --> 00:11:30,760 Шта то ће урадити јесте садрже стварне пиксела, боја вредности. 161 00:11:30,760 --> 00:11:35,950 Све изнад тога у заглављу је неке информације 162 00:11:35,950 --> 00:11:41,240 одговара величини слике, ширину слике, и висине. 163 00:11:41,240 --> 00:11:44,930 Кад идемо у постава касније ћемо видети зашто је величина слике 164 00:11:44,930 --> 00:11:48,670 може бити другачији од ширине или висине. 165 00:11:48,670 --> 00:11:54,240 Па онда да заступа ово - ови битмап слике су низови бајтова - 166 00:11:54,240 --> 00:11:59,370 шта можемо да урадимо је да кажем у реду, ја ћу да се сетим да је индекс 14, 167 00:11:59,370 --> 00:12:03,380 то је место где је величина, на пример, већ шта ћемо да урадимо да се то лакше 168 00:12:03,380 --> 00:12:06,020 се ухвати га у струцт. 169 00:12:06,020 --> 00:12:08,880 И тако имамо два Структуре направили за нас, БИТМАПФИЛЕХЕАДЕР 170 00:12:08,880 --> 00:12:10,440 и БИТМАПИНФОХЕАДЕР, 171 00:12:10,440 --> 00:12:14,840 па кад год смо прочитали у том фајлу, по подразумеваном подешавању то ће да иде у реду, 172 00:12:14,840 --> 00:12:22,360 па како то такође ће попунити у варијабли као што су биВидтх и биСизе. 173 00:12:25,270 --> 00:12:31,230 И на крају, сваки пиксел је представљен са три бајта. 174 00:12:31,230 --> 00:12:35,500 Први је износ плаво у пиксел, други је количина зелене, 175 00:12:35,500 --> 00:12:41,120 и коначно, износ од црвених, где је 0 суштини нема плаве или зелене ни црвене или не 176 00:12:41,120 --> 00:12:43,720 па ФФ је максимална вредност. 177 00:12:43,720 --> 00:12:46,800 То су хексадецималне вредности. 178 00:12:46,800 --> 00:12:53,870 Дакле, ако имамо фф0000, онда то одговара максималном износу од плаве 179 00:12:53,870 --> 00:12:58,890 и онда не зелена и црвена не, па онда би нам дати плаву пиксел. 180 00:12:58,890 --> 00:13:04,190 Онда, ако имамо ФФ-а широм одбора, онда то значи да имамо бели пиксел. 181 00:13:04,190 --> 00:13:11,370 То је врста насупрот обично када кажемо РГБ. То заправо иде БГР. 182 00:13:12,750 --> 00:13:18,990 >> Дакле, ако смо заиста погледамо у примеру битмап слике - дозволите ми да један подигне овде. 183 00:13:31,560 --> 00:13:33,830 То је мало мали. 184 00:13:39,890 --> 00:13:47,840 Ја зумирање у, и видимо да је пикселизован. Изгледа блокова боје. 185 00:13:47,840 --> 00:13:50,110 Имате беле блокове и онда црвено блокова. 186 00:13:50,110 --> 00:13:53,700 Ако играте у Мицрософт Паинт, на пример, можете да направите тако нешто 187 00:13:53,700 --> 00:13:58,960 по основи само сликајући одређене квадрата у одређеном редоследу. 188 00:13:58,960 --> 00:14:08,060 Па шта је онда ово преведе у битмапу је следећи. 189 00:14:08,060 --> 00:14:15,710 Овде имамо прве беле пикселе, да су сви 6 су ф-их, а онда имамо црвене пиксела, 190 00:14:15,710 --> 00:14:19,910 показује 0000ФФ. 191 00:14:19,910 --> 00:14:27,940 И тако низ бајтова који имамо показује како је растерска слика ће изгледати. 192 00:14:27,940 --> 00:14:32,230 Дакле, оно што сам овде урадио је само написано све оне бајтове, а затим обојена у црвено 193 00:14:32,230 --> 00:14:37,550 тако да можете видети врста, ако разрокост мало, како је то врста указује насмејано лице. 194 00:14:40,180 --> 00:14:46,390 >> Начин на који растерске слике сам рад је то замислили основи као мрежу. 195 00:14:46,390 --> 00:14:54,940 И тако по дефаулту, сваки ред мреже мора да буде више од 4 бајта. 196 00:15:00,520 --> 00:15:07,060 Ако гледамо битмап слику, ви попуњавањем сваку вредност. 197 00:15:07,060 --> 00:15:17,370 На пример, можда имате овде црвени, зелени, овде је плаво, 198 00:15:17,370 --> 00:15:24,950 али морате да проверите да ли је слика попуњен са умножак од четири бајта. 199 00:15:24,950 --> 00:15:32,200 Дакле, ако желим своју слику да буде широк три блока, онда бих морао да ставим празну вредност 200 00:15:32,200 --> 00:15:35,640 У последњој да буде више од четири. 201 00:15:35,640 --> 00:15:39,530 Па онда бих додати у нечему што зовемо пуњење. 202 00:15:39,530 --> 00:15:43,750 Ја ћу само да означи да постоји са к. 203 00:15:44,920 --> 00:15:54,160 Сада кажу да желимо слику која је 7 пиксела дуго, на пример. 204 00:15:54,160 --> 00:15:59,550 Имамо 1, 2, 3, 4, 5, 6, 7, 205 00:16:04,750 --> 00:16:07,000 и све који се попуњава у бојом. 206 00:16:07,000 --> 00:16:10,620 Начин на који битмап слике раде јесте да морамо 8тх. 207 00:16:10,620 --> 00:16:12,460 Сада имамо 1, 2, 3, 4, 5, 6, 7. 208 00:16:12,460 --> 00:16:19,360 Морамо 8 простора за битмап слике да правилно чита. 209 00:16:19,360 --> 00:16:25,600 Па онда оно што треба да урадимо је да додамо само мало пуњење 210 00:16:25,600 --> 00:16:29,430 да бисте се уверили да су сви ширинама су јединствени 211 00:16:29,430 --> 00:16:34,260 и да су сви ширинама су вишеструки од 4. 212 00:16:42,110 --> 00:16:47,310 И тако сам претходно рекао, као материјали за Кс или изобличену линије, 213 00:16:47,310 --> 00:16:53,880 али у стварним битмап слика преграде је означен хексадецималном 0. 214 00:16:53,880 --> 00:16:57,340 Дакле, то би био један лик, 0. 215 00:16:58,980 --> 00:17:06,329 Шта може доћи јесте ккд команда. 216 00:17:06,329 --> 00:17:11,220 Шта ради је заправо показује вас, као слично ономе што сам раније урадио са ведра 217 00:17:11,220 --> 00:17:15,630 када сам заправо штампана шта свака боја ће бити за пиксел 218 00:17:15,630 --> 00:17:21,800 и онда га бојама, када покренете ккд са следећим командама, 219 00:17:21,800 --> 00:17:28,670 онда заиста ће штампати шта су боје за те пиксела. 220 00:17:28,670 --> 00:17:33,810 Оно што треба да урадите је да овде сам указују, као-С 54 221 00:17:33,810 --> 00:17:36,530 каже да ћу почети на 54. бајта 222 00:17:36,530 --> 00:17:40,820 јер пре тога, сећам се да ли ми гледамо на карту на растерске, 223 00:17:40,820 --> 00:17:42,690 то је све информације у заглављу и такве ствари. 224 00:17:42,690 --> 00:17:46,280 Али оно што ми заиста стало је стварна пиксела који указују на боју. 225 00:17:46,280 --> 00:17:52,700 Дакле, додавањем у тој застави,-а 54, онда смо могли да видимо вредности боја. 226 00:17:52,700 --> 00:17:56,020 И не брините о компликованим заставама и такве ствари. 227 00:17:56,020 --> 00:18:05,020 У спец проблема сет, имаћете упутства о томе како да користите ккд за приказивање пиксела. 228 00:18:07,070 --> 00:18:15,590 Дакле, ако сте овде, некако изгледа као зеленом пољу, ова мала ствар. 229 00:18:15,590 --> 00:18:23,610 Сам бојама на 00фф00 као у основи рекавши ни плава, пуно зеленила, и не црвени. 230 00:18:23,610 --> 00:18:26,370 Тако да одговара на зелено. 231 00:18:26,370 --> 00:18:31,920 Као што видите овде, видимо зелени правоугаоник. 232 00:18:31,920 --> 00:18:36,660 Овај зелени правоугаоник је само 3 пиксела ширине, па онда шта морамо да урадимо 233 00:18:36,660 --> 00:18:44,350 да бисте се уверили да је слика више од 4 виде је додати у екстра пуњење. 234 00:18:44,350 --> 00:18:49,460 И тако онда је то како ви видите овде ове 0с. 235 00:18:49,460 --> 00:18:54,510 То ће заправо бити резултат вашег Промена величине псет, 236 00:18:54,510 --> 00:19:01,350 суштини узимајући мали битмапу, а затим га прошири 4. 237 00:19:01,350 --> 00:19:09,380 И шта видимо јесте да заправо ова слика је 12 пиксела ширине, али 12 је више од 4, 238 00:19:09,380 --> 00:19:12,940 па ми заправо не виде никакву 0с на крају, јер ми не треба да додате 239 00:19:12,940 --> 00:19:19,070 зато што је потпуно обложе. То нема било више простора. 240 00:19:20,720 --> 00:19:23,470 >> Ок. Сва питања у вези пуњење? 241 00:19:25,150 --> 00:19:27,460 Ок. Кул. 242 00:19:27,460 --> 00:19:32,520 >> Као што сам раније поменуо, битмапа су само низ бајтова. 243 00:19:32,520 --> 00:19:39,170 И шта ми имамо је, уместо потребе да пратите тачно који број бајта 244 00:19:39,170 --> 00:19:47,050 одговара на одређени елемент, ми заправо направили струцт да представља то. 245 00:19:47,050 --> 00:19:50,930 Дакле, оно што ми имамо је РГБТРИПЛЕ струцт. 246 00:19:50,930 --> 00:19:54,590 Кад год имате инстанцу РГБ трипле, 247 00:19:54,590 --> 00:20:00,970 јер је ово врста дефинисати струцт, онда можете да приступите ргбтБлуе променљиву, 248 00:20:00,970 --> 00:20:09,520 Слично томе, зелена и црвена променљиве, које ће указивати колико плава, зелена и црвена, 249 00:20:09,520 --> 00:20:11,580 респективно, ви имате. 250 00:20:11,580 --> 00:20:16,800 >> Дакле, ако имамо плаву променљиву скуп на 0, зелена скуп на ФФ, 251 00:20:16,800 --> 00:20:22,060 што је максимална вредност коју може имати, а онда црвено променљива постављена на 0, 252 00:20:22,060 --> 00:20:27,870 шта онда боје би овај троструки РГБ представљају? >> [Ученик] Греен. 253 00:20:27,870 --> 00:20:29,150 Зелена. Управо тако. 254 00:20:29,150 --> 00:20:34,480 То ће бити корисно да знате да кад год имате инстанцу РГБ трипле, 255 00:20:34,480 --> 00:20:41,340 ви у ствари можете да приступите количину боје - плава, зелена и црвена - одвојено. 256 00:20:43,350 --> 00:20:54,900 >> Сада када смо говорили о структури тога, хајде да погледамо на БМП датотеку. 257 00:20:54,900 --> 00:20:57,870 То су направљени Структуре за вас. 258 00:20:57,870 --> 00:21:01,820 Овде имамо БИТМАПФИЛЕХЕАДЕР струцт. 259 00:21:01,820 --> 00:21:07,610 Од интереса је величина. 260 00:21:07,610 --> 00:21:12,660 Касније, имамо инфо заглавље, која има још неколико ствари које су интересантне за нас, 261 00:21:12,660 --> 00:21:15,480 наиме величина, ширина и висина. 262 00:21:15,480 --> 00:21:19,170 Како ћемо ићи у касније, када сте прочитали у датотеци, 263 00:21:19,170 --> 00:21:25,500 аутоматски чита, јер смо поставили налог да буду исти. 264 00:21:25,500 --> 00:21:31,990 Дакле биСизе ће садржати праве бајтове који одговарају стварној величини слике. 265 00:21:34,700 --> 00:21:40,500 А онда овде, на крају, као што смо говорили, имамо РГБТРИПЛЕ типедеф струцт. 266 00:21:40,500 --> 00:21:46,840 Имамо ргбтБлуе, зелених и црвених вези са њом. 267 00:21:48,210 --> 00:21:49,340 >> Сјајно. Ок. 268 00:21:49,340 --> 00:21:56,360 Сада када смо разумели битмапа мало, схватите да имамо фајл заглавље 269 00:21:56,360 --> 00:22:00,790 и информације заглавља повезан са њом и после тога, имамо интересантну ствар 270 00:22:00,790 --> 00:22:05,110 од боја и те боје су представљени РГБТРИПЛЕ Структуре, 271 00:22:05,110 --> 00:22:12,710 и они, заузврат, имати три вредности придружених на плаво, зелено и црвено. 272 00:22:12,710 --> 00:22:17,270 >> Дакле, сада можемо мало размишљају о Рецовер мало. 273 00:22:17,270 --> 00:22:20,130 Извините. Размислите о детективски роман. 274 00:22:20,130 --> 00:22:25,750 Када имамо појма фајл, онда оно што желимо да урадимо је да чита у томе пиксел по пиксел 275 00:22:25,750 --> 00:22:33,860 и онда некако променити те пикселе, тако да можемо да га избацити у читљивом формату. 276 00:22:33,860 --> 00:22:41,020 И тако да је излаз, ми ћемо писати пиксел по пиксел у вердицт.бмп датотеке. 277 00:22:41,020 --> 00:22:45,120 То је врста много тога да уради. Свесни смо тога. 278 00:22:45,120 --> 00:22:49,860 Дакле, шта смо урадили је да смо заправо сам вам обезбедити цопи.ц. 279 00:22:49,860 --> 00:22:57,610 Шта цопи.ц ради је само чини тачну копију датог битмап фајл а затим исписује га. 280 00:22:57,610 --> 00:23:01,900 Дакле, ово је већ отвара датотеку за вас, пише у пикселима по пикселу, 281 00:23:01,900 --> 00:23:04,510 и онда пише у излазном фајлу. 282 00:23:04,510 --> 00:23:07,080 >> Хајде да погледамо то. 283 00:23:13,390 --> 00:23:18,290 Ово је обезбеђивање одговарајуће коришћење, 284 00:23:18,290 --> 00:23:22,640 добијање овде фајлова. 285 00:23:22,640 --> 00:23:29,940 Шта ово ради је она поставља улазни фајл да будемо оно што смо прошли у у инфиле овде, 286 00:23:29,940 --> 00:23:34,750 што је наша друга командне линије аргумента. 287 00:23:34,750 --> 00:23:37,640 Проверава да се уверите да можемо отворити датотеку. 288 00:23:38,960 --> 00:23:44,860 Проверава да ли можемо овде направити нову оутфиле. 289 00:23:45,630 --> 00:23:53,270 Онда шта то ради овде, то је у основи само почиње читањем се на битмап фајл од почетка. 290 00:23:53,270 --> 00:23:56,700 Почетак, као што знамо, садржи БИТМАПФИЛЕХЕАДЕР, 291 00:23:56,700 --> 00:24:03,200 па ти низови битова ће директно попунити БИТМАПФИЛЕХЕАДЕР. 292 00:24:03,200 --> 00:24:07,940 Дакле, шта имамо овде говори да БИТМАПФИЛЕХЕАДЕР БФ - 293 00:24:07,940 --> 00:24:13,150 То је наша нова променљива типа БИТМАПФИЛЕХЕАДЕР - 294 00:24:13,150 --> 00:24:22,560 ћемо ставити унутра бф оно што смо прочитали из показивача у, што је наша инфиле. 295 00:24:22,560 --> 00:24:23,970 Колико смо прочитали? 296 00:24:23,970 --> 00:24:32,160 Читамо у колико бајтова треба да садржи цео БИТМАПФИЛЕХЕАДЕР. 297 00:24:32,160 --> 00:24:34,660 Слично томе, то је оно што ми радимо за инфо заглављу. 298 00:24:34,660 --> 00:24:39,010 Дакле, ми смо и даље заједно наше датотеке у инфиле, 299 00:24:39,010 --> 00:24:44,360 и ми читаш те битова и бајтова, а ми смо их се директно прикључују у 300 00:24:44,360 --> 00:24:47,880 у овим случајевима варијабли које смо одлука. 301 00:24:49,370 --> 00:24:53,800 Овде само правиш да ли је растерска растерска. 302 00:24:57,670 --> 00:25:01,030 >> Сада имамо оутфиле, зар не? 303 00:25:01,030 --> 00:25:04,420 Дакле, као што стоји када га направите, то је у суштини празно. 304 00:25:04,420 --> 00:25:07,710 Тако смо у основи створити нову битмапу од нуле. 305 00:25:07,710 --> 00:25:12,280 Оно што ми радимо је да морамо да се уверите да смо копирали у заглављу датотеке 306 00:25:12,280 --> 00:25:16,850 и информације заглављу баш као инфиле има. 307 00:25:16,850 --> 00:25:22,850 Оно што ми радимо је да напише - и не заборавите да је БФ је променљива 308 00:25:22,850 --> 00:25:29,300 типа БИТМАПФИЛЕХЕАДЕР, па шта ми радимо је да користимо само тај садржај 309 00:25:29,300 --> 00:25:34,980 да пишем у оутфиле. 310 00:25:36,550 --> 00:25:38,510 Овде се сећате да смо разговарали о томе заштиту, 311 00:25:38,510 --> 00:25:47,820 колико је важно да се уверите да количина пиксела који имамо је више од 4. 312 00:25:47,820 --> 00:25:52,790 То је прилично корисна формула за израчунавање колико постава имате 313 00:25:52,790 --> 00:25:57,670 обзиром ширина датотеке. 314 00:25:57,670 --> 00:26:04,120 Желим да ви сећате да је у цопи.ц имамо формулу за израчунавање пуњење. 315 00:26:04,120 --> 00:26:07,970 Ок? Дакле, сви запамтити. Сјајно. 316 00:26:07,970 --> 00:26:14,050 Па шта онда ради цопи.ц следећи је она пролази кроз све сцанлинес. 317 00:26:14,050 --> 00:26:23,730 Она пролази кроз редове, а потом складишти сваки троструко да чита 318 00:26:23,730 --> 00:26:26,920 и онда је, пише у оутфиле. 319 00:26:26,920 --> 00:26:33,120 Дакле овде читате само један РГБ троструком истовремено 320 00:26:33,120 --> 00:26:39,860 и онда стављате тај исти троструком у оутфиле. 321 00:26:41,120 --> 00:26:48,340 Лукав део је да постава није РГБ троструки, 322 00:26:48,340 --> 00:26:55,200 па не можемо прочитати тај износ Постава од РГБ тројки. 323 00:26:55,200 --> 00:27:01,460 Оно што морамо да урадимо је заправо само кретање наше индикатор датотеке позицију, померите курсор наш, 324 00:27:01,460 --> 00:27:06,840 да врста прескочим све преграде, тако да смо у следећи ред. 325 00:27:06,840 --> 00:27:12,990 И шта онда ово ради је копија вам показује како можда ћете желети да додате пуњење. 326 00:27:12,990 --> 00:27:14,990 Дакле, ми смо израчунати колико постава нам је потребно, 327 00:27:14,990 --> 00:27:18,220 , што значи да нам је потребан Постава број 0с. 328 00:27:18,220 --> 00:27:24,510 Шта ово ради је за петљу која ставља Постава број 0с у нашу оутфиле. 329 00:27:24,510 --> 00:27:31,170 И на крају, можете затворити обе датотеке. Можете затворити инфиле као и оутфиле. 330 00:27:31,170 --> 00:27:34,870 >> Дакле, то је начин цопи.ц ради, 331 00:27:34,870 --> 00:27:37,430 и то ће бити прилично корисна. 332 00:27:39,720 --> 00:27:43,750 Уместо ствари само директно копирање и налепите 333 00:27:43,750 --> 00:27:46,800 или само гледа њега и куцате у шта год желите, 334 00:27:46,800 --> 00:27:49,440 само можда желети да извршите ову команду у терминалу, 335 00:27:49,440 --> 00:27:54,520 цп цопи.ц входунит.ц, који ће креирати нову датотеку, входунит.ц, 336 00:27:54,520 --> 00:27:58,330 који садржи исти садржај као копија ради. 337 00:27:58,330 --> 00:28:03,880 Па шта онда можемо да урадимо је да користимо као оквир на основу којих би се изгради и уређивање 338 00:28:03,880 --> 00:28:06,900 за наше детективски роман датотеку. 339 00:28:08,500 --> 00:28:14,670 >> То су наша на-листе да уради за детективски роман, али шта ради цопи.ц 340 00:28:14,670 --> 00:28:16,730 заправо брине већина њих за нас. 341 00:28:16,730 --> 00:28:21,900 Дакле, све што треба да урадите следеће је да промените пиксела по потреби 342 00:28:21,900 --> 00:28:25,920 да се заиста направи фајл читљив. 343 00:28:25,920 --> 00:28:32,960 Запамтите да је за дату пиксел троструки, тако да за дату променљиву типа РГБТРИПЛЕ, 344 00:28:32,960 --> 00:28:35,990 можете да приступите плаве, зелене и црвене вредности. 345 00:28:35,990 --> 00:28:38,670 То ће доћи у руци јер ако можете да им приступите, 346 00:28:38,670 --> 00:28:41,770 То значи да можете да их провери, 347 00:28:41,770 --> 00:28:45,430 а то значи да можете да их промените. 348 00:28:45,430 --> 00:28:49,430 >> Дакле, када смо се вратили у нашу црвено пример у облику лупе, 349 00:28:49,430 --> 00:28:53,390 основи, који је деловао као нека врста филтера за нас. 350 00:28:53,390 --> 00:28:58,160 Дакле, оно што ми желимо да урадимо јесте желимо да филтрира све тројке које долазе ин 351 00:28:58,160 --> 00:29:01,240 Постоји неколико начина да се то уради. 352 00:29:01,240 --> 00:29:07,100 У суштини, можете имати шта год тип филтера желите. 353 00:29:07,100 --> 00:29:09,890 Можда желите да промените све црвене пикселе 354 00:29:09,890 --> 00:29:13,570 или можда желите да промените другачији пиксел боје у другу боју. 355 00:29:13,570 --> 00:29:15,400 То је на вама. 356 00:29:15,400 --> 00:29:19,580 Запамтите да можете да проверите шта боје пиксела је 357 00:29:19,580 --> 00:29:23,000 и онда можете да промените како ти пролазиш. 358 00:29:24,410 --> 00:29:26,420 >> Ок. Дакле, то је детективски роман. 359 00:29:26,420 --> 00:29:32,760 Када покренете детективски роман, ви ћете знати ко је кривац за злочин био. 360 00:29:32,760 --> 00:29:35,540 >> Сада ћемо да идемо на Ресизе. 361 00:29:35,540 --> 00:29:37,990 Ми ћемо и даље имати посла са битмапе. 362 00:29:37,990 --> 00:29:40,750 Шта ћемо да радимо јесте да ћемо имати битмапу унос 363 00:29:40,750 --> 00:29:45,890 а онда ћемо проћи у великом броју, а затим добити оутфиле битмапу 364 00:29:45,890 --> 00:29:51,380 где је то у суштини наш инфиле смањени са н. 365 00:29:54,670 --> 00:30:01,450 Рецимо мој досије био само један пиксел велики. 366 00:30:01,450 --> 00:30:09,100 Онда, ако је мој н је 3, скалирање по 3, онда бих поновити пиксел н број пута, 367 00:30:09,100 --> 00:30:14,410 тако 3 пута, а затим и да смањи 3 пута, као добро. 368 00:30:14,410 --> 00:30:17,840 Па видиш да сам га скалирање вертикално, као и хоризонтално. 369 00:30:17,840 --> 00:30:19,680 >> А онда ево примера. 370 00:30:19,680 --> 00:30:27,590 Ако имате н = 2, видећете да прва плава пиксел има понавља два пута 371 00:30:27,590 --> 00:30:30,930 хоризонтално као и вертикално два пута. 372 00:30:30,930 --> 00:30:38,040 А онда наставља даље, и тако да имају директан скалирање свог оригиналну слику по два. 373 00:30:40,920 --> 00:30:47,600 >> Дакле, ако смо разрадити Псеудокод за то, желимо да отворите датотеку. 374 00:30:47,600 --> 00:30:49,880 И онда знајући да ако се вратимо овде, 375 00:30:49,880 --> 00:30:54,540 видимо да је ширина за оутфиле ће бити другачији од ширине за инфиле. 376 00:30:54,540 --> 00:30:56,130 Шта то значи? 377 00:30:56,130 --> 00:31:01,230 То значи да је наша информација заглавље ће се променити. 378 00:31:01,230 --> 00:31:03,790 И шта ћемо да урадимо је да ажурирате информације заглавља, 379 00:31:03,790 --> 00:31:11,820 знајући да када читамо у списима ако ради на цопи.ц оквира, 380 00:31:11,820 --> 00:31:17,570 већ имамо променљиву која показује шта је величина и такве ствари. 381 00:31:17,570 --> 00:31:24,060 Дакле, кад имате, оно што можда ћете желети да урадите је да промените те посебне променљиве. 382 00:31:24,060 --> 00:31:29,380 Запамтите, ако имате струцт, како приступате променљиве унутар тога. 383 00:31:29,380 --> 00:31:32,080 Ви користите дот оператера, зар не? 384 00:31:32,080 --> 00:31:36,420 Дакле користи да знате да ћете морати да промените информације заглавља. 385 00:31:36,480 --> 00:31:41,030 Дакле, овде је само списак актуелних елемената који ће бити промена у датотеци. 386 00:31:41,030 --> 00:31:45,180 Величина датотеке ће се мења, слике, као и ширину и висину. 387 00:31:45,180 --> 00:31:50,080 Па онда да се вратимо на мапи на растерске, 388 00:31:50,080 --> 00:31:57,730 погледај да ли је датотека заглавља или заглавље Информације које садржи такве информације 389 00:31:57,730 --> 00:32:00,920 а затим промените по потреби. 390 00:32:05,010 --> 00:32:12,470 Опет, кажем цп цопи.ц ресизе.ц. 391 00:32:12,470 --> 00:32:19,270 То значи да ресизе.ц сада садржи све што је садржано у копији 392 00:32:19,270 --> 00:32:24,490 јер копија нам даје начин читања у сваком пикселу Сцанлине по пикселу. 393 00:32:24,490 --> 00:32:29,860 Осим сада, уместо да само мењају вредности као што смо урадили у детективски роман, 394 00:32:29,860 --> 00:32:37,980 оно што ми желимо да урадимо јесте да желим да пишем у више тачака 395 00:32:37,980 --> 00:32:43,580 док је наш н је већи од 1. 396 00:32:43,580 --> 00:32:47,110 >> Онда оно што ми желимо да урадимо јесте желимо да га се протежу хоризонтално н, 397 00:32:47,110 --> 00:32:50,490 као и да је протежу вертикално н. 398 00:32:50,490 --> 00:32:52,710 Како бисмо то урадили? 399 00:32:52,710 --> 00:32:56,890 Рецимо ваш н 2 и имате овај дао инфиле. 400 00:32:56,890 --> 00:32:58,730 Ваш курсор ће почети у првом, 401 00:32:58,730 --> 00:33:03,530 и шта желите да урадите, ако је н 2, желите да штампате у 2 од њих. 402 00:33:03,530 --> 00:33:05,490 Тако да штампате у 2 од њих. 403 00:33:05,490 --> 00:33:10,830 Онда курсор ће да се креће на следећи пиксела, што је црвени, 404 00:33:10,830 --> 00:33:18,400 и то це да одштампате 2 од тих црвене, додавање га на оно што је раније урађено. 405 00:33:18,400 --> 00:33:26,280 Затим ће се померити курсор на следећу пиксел и скрене у 2 од њих. 406 00:33:26,280 --> 00:33:37,180 Ако се осврнете на цопи.ц оквира, шта то чини овде 407 00:33:37,180 --> 00:33:42,830 се ствара нову инстанцу РГБ трипле, нова променљива зове троструки. 408 00:33:42,830 --> 00:33:50,500 И овде када се чита у њу, она чита са инфиле 1 РГБТРИПЛЕ 409 00:33:50,500 --> 00:33:53,470 и да га чува унутар тог троструког променљиве. 410 00:33:53,470 --> 00:33:57,590 Па онда заправо имају променљиву која представља тај одређени пиксел. 411 00:33:57,590 --> 00:34:05,290 Онда када пишете, шта ћете можда желети да урадите је да обложити је фврите изјави у за петље 412 00:34:05,290 --> 00:34:11,080 која га пише у свој оутфиле онолико пута колико је потребно. 413 00:34:17,449 --> 00:34:20,100 То је једноставно довољно. 414 00:34:20,200 --> 00:34:27,590 Само у основи поновите процес писања н број пута да га скали хоризонтално. 415 00:34:27,590 --> 00:34:32,969 >> Али, онда морамо имати на уму да је наш постава се неће променити. 416 00:34:47,350 --> 00:34:53,020 Раније рећи да смо имали нешто дужине 3. 417 00:34:53,020 --> 00:35:00,130 Онда ћемо само да додамо колико постава? Само још један да буде више од 4. 418 00:35:00,130 --> 00:35:10,480 Али рећи да смо скалирање ову конкретну слику са н = 2. 419 00:35:10,480 --> 00:35:16,300 Па онда колико плаво пиксела би смо на крају? Ми би имали 6. 420 00:35:16,300 --> 00:35:21,470 1, 2, 3, 4, 5, 6. У реду. 421 00:35:21,470 --> 00:35:26,580 6 није дељив са 4. Шта је најближа више од 4? То ће бити 8. 422 00:35:26,580 --> 00:35:33,200 Дакле, ми у ствари идемо тамо имају 2 слова постава. 423 00:35:33,200 --> 00:35:38,720 >> Да ли се ико сећа да имамо формулу за израчунавање паддинг 424 00:35:38,720 --> 00:35:41,350 и где би то могао бити? 425 00:35:41,350 --> 00:35:45,160 [Нечујан ученик одговор] >> Да, цопи.ц. Тачно. 426 00:35:45,160 --> 00:35:49,800 Постоји формула у цопи.ц за израчунавање колико постава имате 427 00:35:49,800 --> 00:35:53,810 дао посебну ширину битмап слике. 428 00:35:53,810 --> 00:36:02,950 Дакле то ће бити корисно када је потребно да додате у одређеном износу пуњење 429 00:36:02,950 --> 00:36:06,160 да стварно схватим колико постава морате да додате. 430 00:36:10,820 --> 00:36:15,850 Али, једна напомена, међутим, да ли желите да се уверите да ли користите одговарајућу величину. 431 00:36:15,850 --> 00:36:21,410 Само будите опрезни, јер сте у основи идете да се бави са два битмап слике. 432 00:36:21,410 --> 00:36:23,410 Ви желите да се уверите да ли користите прави. 433 00:36:23,410 --> 00:36:26,820 Када сте обрачуна паддинг за оутфиле, желите да користите ширину оутфиле 434 00:36:26,820 --> 00:36:29,860 а не ширина претходног. 435 00:36:29,860 --> 00:36:37,240 >> Сјајно. Та врста брине се протеже хоризонтално читав битмап слику. 436 00:36:37,240 --> 00:36:41,290 Али оно што ми желимо да урадимо је заправо протежу вертикално као добро. 437 00:36:41,290 --> 00:36:48,760 Ово ће бити мало теже, јер када смо завршили копирање ред 438 00:36:48,760 --> 00:36:51,580 и писање тај ред, наша курсор ће бити на крају. 439 00:36:51,580 --> 00:36:56,210 Дакле, ако смо поново прочитали, онда само ће прочитати на следећој линији. 440 00:36:56,210 --> 00:37:03,660 Дакле, оно што ми желимо да урадимо јесте врста наћи неки начин да копирате опет оне редове 441 00:37:03,660 --> 00:37:12,500 или само врста узимања тог реда, а затим га поново преписивање. 442 00:37:14,380 --> 00:37:17,940 Као што сам некако алудира, постоји неколико начина да се то уради. 443 00:37:17,940 --> 00:37:23,040 Шта можете да урадите је као да идеш кроз и читање преко одређеног Сцанлине 444 00:37:23,040 --> 00:37:28,560 и промена је као неопходно, затим врста продавнице свих тих пиксела у низу. 445 00:37:28,560 --> 00:37:36,350 Онда касније знате да ћете морати да одштампате опет тај низ, 446 00:37:36,350 --> 00:37:39,830 па ви сте користили тај низ да се то уради. 447 00:37:39,830 --> 00:37:44,500 Други начин да то урадите је да би запишите један ред, 448 00:37:44,500 --> 00:37:47,950 Разумем да вам је потребно да копирате то поново, тако да заправо померите курсор, 449 00:37:47,950 --> 00:37:50,950 и да ће се коришћењем метода фсеек. 450 00:37:50,950 --> 00:37:56,410 Могли померите курсор скроз назад, а затим поновите поступак копирања. 451 00:37:56,410 --> 00:38:03,960 >> Дакле, ако је наш број скалирање је н, онда колико пута ћемо морати да се вратимо 452 00:38:03,960 --> 00:38:10,500 и коригујте линију? >> [Ученик] н - 1. >> Да, савршено. н - 1. 453 00:38:10,500 --> 00:38:14,390 Ми смо то урадили једном већ тако, онда ћемо желети да понови поступак иде назад 454 00:38:14,390 --> 00:38:17,460 н - 1 износ времена. 455 00:38:22,730 --> 00:38:25,860 Ок. Тако да имате функцију ресизе. 456 00:38:25,860 --> 00:38:34,360 >> Сада можемо доћи до заиста забаван део, мој омиљени псет, који је опорави. 457 00:38:34,360 --> 00:38:39,580 Уместо битмапе, овај пут имамо посла са ЈПЕГ. 458 00:38:39,580 --> 00:38:43,370 Ми заправо не даје датотеку само за ЈПЕГ, 459 00:38:43,370 --> 00:38:46,600 смо дали смо у суштини сирови формат меморијских картица. 460 00:38:46,600 --> 00:38:51,790 И тако ова садржи мало инфо и смеће вредности у почетку, 461 00:38:51,790 --> 00:38:57,240 а онда почиње и да има гомилу ЈПЕГ фајлова. 462 00:38:57,240 --> 00:39:03,430 Међутим, ми смо предали картицу где смо обрисали фотографије; 463 00:39:03,430 --> 00:39:08,300 суштини, ми смо заборавили где су фотографије се налазе у оквиру картице. 464 00:39:08,300 --> 00:39:12,770 Онда је наш задатак у Спасавање је да прођемо кроз ову картицу формату 465 00:39:12,770 --> 00:39:16,500 и поново пронаћи те слике. 466 00:39:16,500 --> 00:39:23,990 >> Срећом, структура ЈПЕГ фајлова и картице датотека је мало помоћи. 467 00:39:23,990 --> 00:39:28,850 Дефинитивно би то било мало теже ако нисте били у овом конкретном формату. 468 00:39:28,850 --> 00:39:40,160 Сваки ЈПЕГ фајлова заправо почиње са два могућа секвенцама горе наведеним. 469 00:39:40,160 --> 00:39:42,970 У суштини, кад год имате нову ЈПЕГ фајл, 470 00:39:42,970 --> 00:39:52,720 почиње са било низу ффд8 ффе0 или други, ффд8 ффе1. 471 00:39:52,720 --> 00:39:59,530 Још једна корисна ствар коју треба да знате је да су ЈПЕГ цонтигуоусли чувају. 472 00:39:59,530 --> 00:40:03,380 Дакле, кад год неко ЈПЕГ фајлова заврши, други почиње. 473 00:40:03,380 --> 00:40:07,070 Дакле, не постоји никаква између вредности тамо. 474 00:40:07,070 --> 00:40:15,510 Када кликнете на почетак ЈПЕГ, ако сте већ били читања ЈПЕГ, 475 00:40:15,510 --> 00:40:21,800 Ви знате да сте погодили крај претходне и почетак следеће. 476 00:40:21,800 --> 00:40:25,890 >> За врсте визуализује то, направио сам шему. 477 00:40:25,890 --> 00:40:36,910 Још једна ствар у вези ЈПЕГ је да их можемо прочитати у секвенцама 512 бајтова у једном тренутку, 478 00:40:36,910 --> 00:40:39,380 Слично је и са почетка картице. 479 00:40:39,380 --> 00:40:43,370 Ми не треба да се провери сваки бајт јер би безвезе. 480 00:40:43,370 --> 00:40:48,200 Тако, уместо да, оно што можемо да урадимо је заправо само прочитати у 512 бајта у време 481 00:40:48,200 --> 00:40:54,700 и онда, уместо да провере између оних који у тим ситним малим кришке, 482 00:40:54,700 --> 00:40:58,640 можемо само да провери почетак од 512 бајтова. 483 00:40:58,640 --> 00:41:02,570 У суштини, у овој слици, оно што видите је у почетку картице, 484 00:41:02,570 --> 00:41:08,700 имате вредности које нису баш релевантни стварним самих ЈПЕГ. 485 00:41:08,700 --> 00:41:15,830 Али шта онда ја имам је стар да укаже један од два полазних секвенце за ЈПЕГ. 486 00:41:15,830 --> 00:41:19,910 Дакле, кад год видиш звезду, знате да имате ЈПЕГ датотеку. 487 00:41:19,910 --> 00:41:25,030 И онда сваки ЈПЕГ фајлова ће бити неки више од 512 бајтова 488 00:41:25,030 --> 00:41:27,880 али не нужно исте више. 489 00:41:27,880 --> 00:41:32,050 Начин на који ви знате да сте ударио другог ЈПЕГ је ако погодите другу звезду, 490 00:41:32,050 --> 00:41:39,090 други који почиње низ бајтова. 491 00:41:39,090 --> 00:41:43,330 Онда оно што овде имамо јесте да имате црвену ЈПЕГ континуирану датотеку док си ударио звезду, 492 00:41:43,330 --> 00:41:45,150 који је означен новој боји. 493 00:41:45,150 --> 00:41:48,510 Ви наставите и онда ударио још звезду, ударио други ЈПЕГ, 494 00:41:48,510 --> 00:41:50,590 Ви наставите све до краја. 495 00:41:50,590 --> 00:41:53,180 Ви сте на последњем слику овде, розе један. 496 00:41:53,180 --> 00:41:58,220 Ти иди до краја док не удари крај датотеке карактера. 497 00:41:58,220 --> 00:42:00,820 Ово ће бити заиста корисно. 498 00:42:00,820 --> 00:42:03,170 >> Неколико главних такеаваис овде: 499 00:42:03,170 --> 00:42:06,670 Картица датотека не почиње са ЈПЕГ, 500 00:42:06,670 --> 00:42:13,350 али када почне ЈПЕГ, сви ЈПЕГ чувају раме уз раме једни другима. 501 00:42:17,520 --> 00:42:20,420 >> Неки Псеудокод за Спасавање. 502 00:42:20,420 --> 00:42:22,570 Прво, ми ћемо отворити нашу датотеку картица, 503 00:42:22,570 --> 00:42:27,500 и да ће користити нашу датотеку И / О функције. 504 00:42:27,500 --> 00:42:32,430 Ми ћемо поновити следеће процес док смо стигли на крај фајла. 505 00:42:32,430 --> 00:42:36,450 Ми ћемо прочитати 512 бајтова у исто време. 506 00:42:36,450 --> 00:42:39,180 И оно што сам рекао овде јесте да ћемо да га сачувате у бафер, 507 00:42:39,180 --> 00:42:46,230 Дакле, у основи држи тих 512 бајта док не будемо знали шта да раде са њима. 508 00:42:46,230 --> 00:42:50,300 Онда оно што ми желимо да урадимо јесте да желите да проверите да ли смо погодили звезду или не. 509 00:42:50,300 --> 00:42:57,960 Ако смо погодили звезду, ако смо ударио један од полазних секвенци, 510 00:42:57,960 --> 00:42:59,980 онда знамо да смо погодили нову ЈПЕГ датотеку. 511 00:42:59,980 --> 00:43:08,860 Шта ћемо да урадимо је да ћемо желети да креирате нову датотеку у нашем каталогу псет4 512 00:43:08,860 --> 00:43:14,480 да настави да на тај фајл. 513 00:43:14,480 --> 00:43:18,220 Али исто тако, ако смо већ направили ЈПЕГ раније, 514 00:43:18,220 --> 00:43:25,620 онда желим да завршим тај фајл и гурните га псет4 фолдер, 515 00:43:25,620 --> 00:43:29,780 где ћемо имати тај фајл ускладиштена јер ако не наведете да смо завршили тај ЈПЕГ фајл, 516 00:43:29,780 --> 00:43:37,290 онда ћемо имати у основи неодређени износ. У ЈПЕГ никада неће завршити. 517 00:43:37,290 --> 00:43:40,840 Дакле, желимо да се уверите да када читате на ЈПЕГ датотеке и написао да, 518 00:43:40,840 --> 00:43:46,590 желимо да се посебно близу да би се отворили следећу један. 519 00:43:46,590 --> 00:43:48,430 Ми ћемо желети да проверите неколико ствари. 520 00:43:48,430 --> 00:43:52,880 Желимо да провери да ли смо на почетку новог ЈПЕГ са нашим бафер 521 00:43:52,880 --> 00:43:56,780 и ако смо већ нашли пред ЈПЕГ 522 00:43:56,780 --> 00:44:03,930 јер ће незнатно променити свој процес. 523 00:44:03,930 --> 00:44:07,880 Дакле, након што прође кроз све путу и ​​ударио крај фајла, 524 00:44:07,880 --> 00:44:11,570 шта онда ћете желети да урадите је да ћете желети да затворите све фајлове који су тренутно отворени. 525 00:44:11,570 --> 00:44:14,100 То ће вероватно бити последњи ЈПЕГ фајлова које имате, 526 00:44:14,100 --> 00:44:18,930 као и картице фајл који сте се бавили. 527 00:44:21,940 --> 00:44:28,670 >> Последња препрека која треба да се позабаве како да се заиста направи ЈПЕГ датотеку 528 00:44:28,670 --> 00:44:31,950 и како заправо гура у фасциклу. 529 00:44:33,650 --> 00:44:39,850 Тхе псет захтева да сваки ЈПЕГ да вам буде у следећем формату, 530 00:44:39,850 --> 00:44:43,990 где имате тај број. јпг. 531 00:44:43,990 --> 00:44:50,750 Број, чак и ако је 0, зовемо га 000.јпг. 532 00:44:50,750 --> 00:44:55,730 Кад год вам је ЈПЕГ у вашем програму, 533 00:44:55,730 --> 00:44:58,040 ћете желети да га поменемо у циљу да се то нашао. 534 00:44:58,040 --> 00:44:59,700 Шта ово значи? 535 00:44:59,700 --> 00:45:03,530 Морамо врсте пратити колико смо пронашли 536 00:45:03,530 --> 00:45:08,680 а шта је број сваког ЈПЕГ требало да буде. 537 00:45:08,680 --> 00:45:13,800 Овде ћемо искористити спринтф функцију. 538 00:45:13,800 --> 00:45:17,480 Слично иф, који је управо врста отисака вредност напоље у терминалу, 539 00:45:17,480 --> 00:45:23,910 спринтф штампа фајл напоље у фолдер. 540 00:45:23,910 --> 00:45:30,870 И тако шта би урадили да сам имао спринтф, титулу, а онда је стринг тамо, 541 00:45:30,870 --> 00:45:36,660 то би одштампали 2.јпг. 542 00:45:36,660 --> 00:45:41,020 Под претпоставком да сам добро затворио сам фајлове, 543 00:45:41,020 --> 00:45:47,210 која ће садржати фајл који сам био писања напоље. 544 00:45:47,210 --> 00:45:50,320 Али једна ствар је да код који ја имам овде 545 00:45:50,320 --> 00:45:53,360 не сасвим задовољава оно што псет захтева. 546 00:45:53,360 --> 00:46:02,410 Тхе псет захтева да други ЈПЕГ формату би требало да буде именован 002 уместо само 2. 547 00:46:02,410 --> 00:46:09,160 Дакле, када сте одштампали име, онда можда ћете желети да нешто промените чувар места. 548 00:46:09,160 --> 00:46:18,140 >> Да ли се ико сећа како смо омогућавају додатне просторе када смо одштампали нешто? 549 00:46:18,140 --> 00:46:22,530 Да. >> [Ученик] Ти ставити 3 одсто између знака и 2. >> Да, савршено. 550 00:46:22,530 --> 00:46:25,610 Ви ћете ставити 3 у овом случају, јер желимо простор за 3. 551 00:46:25,610 --> 00:46:32,590 % 3д би вероватно вам дати 002.јпг уместо 2. 552 00:46:32,590 --> 00:46:40,120 Први аргумент у спринтф функцију је заправо знак арраи 553 00:46:40,120 --> 00:46:42,520 што смо раније знали као стрингове. 554 00:46:42,520 --> 00:46:50,700 Они воља, некако више као привремено складиштење, чување само резултанта ниске. 555 00:46:50,700 --> 00:46:54,950 Нећете баш да се баве са овим, али морате да га укључите. 556 00:46:54,950 --> 00:47:00,710 >> Знајући да сваки назив фајла има број који заузима три знака, 557 00:47:00,710 --> 00:47:06,770 и онда јпг, колико дуго. ово треба да буде низ? 558 00:47:09,070 --> 00:47:14,310 Избаци број. Колико знакова у наслову, у име? 559 00:47:18,090 --> 00:47:26,320 Дакле, ту је 3 хасхтагс, период, јпг. >> [Ученик] 7. >> 7. Не баш. 560 00:47:26,320 --> 00:47:32,000 Ми ћемо желети 8 јер желимо да омогућава нулте Терминатору као добро. 561 00:47:45,340 --> 00:47:49,730 >> Коначно, само да извуче процес који ћете радити за Рецовер, 562 00:47:49,730 --> 00:47:55,420 имате неку информацију почетак. 563 00:47:55,420 --> 00:48:02,460 Ви се наставити све док не пронађете почетак ЈПЕГ датотеке, 564 00:48:02,460 --> 00:48:07,900 а то може да буде један од два почињу секвенци. 565 00:48:07,900 --> 00:48:12,510 Ви наставите са читањем. Сваки сласх овде представља 512 бајтова. 566 00:48:12,510 --> 00:48:22,630 Ви наставите читање, имајте на читање док наиђете другу стартну секвенцу. 567 00:48:22,630 --> 00:48:29,790 Када имате то, прекинули тренутни ЈПЕГ - у овом случају, то је црвени, 568 00:48:29,790 --> 00:48:31,030 па желите да завршите то. 569 00:48:31,030 --> 00:48:35,540 Хоћеш да спринтф име које у свом псет4 фолдер, 570 00:48:35,540 --> 00:48:41,580 онда желите да отворите нову ЈПЕГ и онда наставите са читањем 571 00:48:41,580 --> 00:48:46,370 док не наиђете на следећу. 572 00:48:46,370 --> 00:48:49,040 Имајте на читање, имајте на читање, 573 00:48:49,040 --> 00:48:56,290 и онда на крају, на крају, ти ћеш доћи до краја датотеке, 574 00:48:56,290 --> 00:49:00,360 па ћете желети да затворите последњу ЈПЕГ које сте радили, 575 00:49:00,360 --> 00:49:08,380 спринтф да у свој псет4 фасциклу, а затим погледајте све слике које сте стечен. 576 00:49:08,380 --> 00:49:12,050 Те слике су заправо слике ЦС50 особља, 577 00:49:12,050 --> 00:49:16,430 па ово је место где бонус забава део псет долази у 578 00:49:16,430 --> 00:49:26,310 је да се такмиче у вашим одељцима да бисте пронашли поздрав у сликама 579 00:49:26,310 --> 00:49:34,610 и сликају са њима да докажу да сте урадили псет 580 00:49:34,610 --> 00:49:37,030 па тако можете видети које је особље су на сликама. 581 00:49:37,030 --> 00:49:41,510 Дакле, онда сликати са особљем. Понекад ћете морати да их јуре доле. 582 00:49:41,510 --> 00:49:44,680 Вероватно су неки од њих ће покушати да побегну од вас. 583 00:49:44,680 --> 00:49:47,320 Можете сликати са њима. 584 00:49:47,320 --> 00:49:51,190 Ово је у току. То није због, када је због псет. 585 00:49:51,190 --> 00:49:53,340 Рок ће бити објављен у спец. 586 00:49:53,340 --> 00:49:58,060 Затим заједно са својим делу, шта год секција узима највише слике 587 00:49:58,060 --> 00:50:04,430 са највише чланова особља ће освојити прилично Ауесоме награду. 588 00:50:04,430 --> 00:50:08,890 То је врста подстицаја да добије ваш псет4 завршио што је брже могуће 589 00:50:08,890 --> 00:50:10,820 јер онда можете добити на посао 590 00:50:10,820 --> 00:50:14,570 лови све различите ЦС50 особља. 591 00:50:14,570 --> 00:50:17,500 То није обавезно, мада, тако да када се слика, 592 00:50:17,500 --> 00:50:20,310 онда сте завршили са псет4. 593 00:50:20,310 --> 00:50:23,970 >> И ја сам завршио са описом 4, тако да хвала свима на доласку. 594 00:50:23,970 --> 00:50:29,330 Срећно са форензику. [Аплауз] 595 00:50:29,330 --> 00:50:31,000 [ЦС50.ТВ]