1 00:00:00,000 --> 00:00:02,700 [Powered by Google Translate] [Walkthrough - Problēma Set 4] 2 00:00:02,700 --> 00:00:05,000 [Zamyla Chan - Hārvarda] 3 00:00:05,000 --> 00:00:07,340 [Tas ir CS50. - CS50.TV] 4 00:00:08,210 --> 00:00:11,670 Labi. Sveiki, visiem, un laipni uz 4 Walkthrough. 5 00:00:11,670 --> 00:00:14,270 >> Šodien mūsu PSET ir kriminālistikas. 6 00:00:14,270 --> 00:00:18,080 Kriminālistikas ir patiešām jautri PSET kas ietver nodarbojas ar bitkartes failus 7 00:00:18,080 --> 00:00:21,550 atklāt, kas izdarījis noziegumu. 8 00:00:21,550 --> 00:00:24,200 Tad mēs ejam, lai mainītu dažus bitkartes failus, 9 00:00:24,200 --> 00:00:27,780 tad mēs esam arī gatavojas risināt ar patiesi jautru daļa sauc Atgūt, 10 00:00:27,780 --> 00:00:31,160 kurā mēs būtībā pasniedza atmiņas karti 11 00:00:31,160 --> 00:00:34,350 , kurā kāds ir nejauši svītrots visus savus failus, 12 00:00:34,350 --> 00:00:38,860 un mēs lūdza piedzīt šos failus. 13 00:00:38,860 --> 00:00:42,910 >> Bet vispirms, pirms mēs nokļūt PSET, es tiešām tikai gribu apsveikt visus. 14 00:00:42,910 --> 00:00:45,230 Mēs esam par viduspunktā šo kursu. 15 00:00:45,230 --> 00:00:50,070 Viktorīna 0 ir aiz mums, un mēs esam pie pset4, tāpēc būtībā, mēs esam pusceļā. 16 00:00:50,070 --> 00:00:55,490 Mēs esam nogājuši garu ceļu, ja paskatās atpakaļ uz savu psets, pset0 un pset1, 17 00:00:55,490 --> 00:00:57,300 tik apsveikt sevi par to, 18 00:00:57,300 --> 00:01:00,760 un mēs esam gatavojas nokļūt daži patiešām fun stuff. 19 00:01:00,760 --> 00:01:07,070 >> Tātad mūsu Toolbox par šo PSET, atkal, nevis rādīt sudo Yum-y atjauninājumu, 20 00:01:07,070 --> 00:01:13,890 mēs esam spējīgi tikai palaist update50 ja jūs esat pie versijas 17,3 un virs no ierīces. 21 00:01:13,890 --> 00:01:17,380 Tāpēc pārliecinieties, lai palaistu update50 - tas ir daudz vieglāk, dažiem mazāk rakstzīmes - 22 00:01:17,380 --> 00:01:20,640 lai pārliecinātos, ka jūs esat pie jaunāko versiju ierīces. 23 00:01:20,640 --> 00:01:25,410 Īpaši tas ir svarīgi, lai update50 kad mēs sāktu izmantot CS50 Check. 24 00:01:25,410 --> 00:01:28,700 Tāpēc pārliecinieties, ka jūs darīt. 25 00:01:28,700 --> 00:01:30,760 >> Par visu par šo PSET sadaļām, 26 00:01:30,760 --> 00:01:34,350 mēs gribam būt darīšana ar failu ieejām un izejām, failu I / O 27 00:01:34,350 --> 00:01:38,140 Mēs ejam, lai būtu iet pa daudz programmas, kas nodarbojas ar masīviem 28 00:01:38,140 --> 00:01:40,350 norādot uz failiem un lietām, piemēram, ka, 29 00:01:40,350 --> 00:01:43,050 tāpēc mēs vēlamies, lai pārliecinātos, ka mēs esam patiesi pazīstami un ērts 30 00:01:43,050 --> 00:01:47,990 nodarbojas ar to, kā ieejas un izejas uz failu. 31 00:01:47,990 --> 00:01:52,080 >> Izplatīšanas kodu šim PSET ir failu sauc copy.c, 32 00:01:52,080 --> 00:01:55,280 un tas, ko mēs spēsim atrast būs ļoti noderīga, lai mums 33 00:01:55,280 --> 00:02:00,340 jo mēs ejam, lai galu galā faktiski kopējot copy.c failu 34 00:02:00,340 --> 00:02:05,350 un vienkārši mainīt to nedaudz, lai varētu sasniegt pirmos 2 daļas problēmu kopumu. 35 00:02:05,350 --> 00:02:09,030 >> Un tā tad kā jau minēju iepriekš, mums ir darīšana ar bitkartes, kā arī JPEG. 36 00:02:09,030 --> 00:02:13,170 Tik tiešām izprastu struktūru, kā šie faili tiek organizēti, 37 00:02:13,170 --> 00:02:16,170 kā mēs varam patiesi tulkot 0s un 1s uz structs 38 00:02:16,170 --> 00:02:19,040 un lietas, ko mēs faktiski var saprast un interpretēt un rediģēt, 39 00:02:19,040 --> 00:02:21,000 kas būs ļoti svarīgi, 40 00:02:21,000 --> 00:02:25,970 lai iet uz JPEG un bitkartes failus un izprast struktūru tiem. 41 00:02:25,970 --> 00:02:30,780 >> Pset4, kā ierasts, sākas ar daļu no jautājumiem. 42 00:02:30,780 --> 00:02:36,600 Tie, tiks galā ar failu I / O un saņemt jūs pieraduši, ka. 43 00:02:36,600 --> 00:02:42,520 Tad daļa 1 ir Detektīvromāns, kurā jūs esat dota bitkartes failu 44 00:02:42,520 --> 00:02:45,630 kas izskatās veida, piemēram sarkaniem punktiem visā. 45 00:02:45,630 --> 00:02:52,180 Un tad būtībā tas, ko mēs gatavojamies darīt, ir veikt šo failu un vienkārši rediģēt to nedaudz 46 00:02:52,180 --> 00:02:54,010 par versiju, ka mēs varam lasīt. 47 00:02:54,010 --> 00:02:56,000 Būtībā, kad mēs apdare, mums būs pašu failu, 48 00:02:56,000 --> 00:03:02,630 ja mums būs iespēja redzēt slēpto ziņojumu aizsegt ar visiem tiem sarkanajiem punktiem. 49 00:03:02,630 --> 00:03:07,310 Tad maiņa ir programma, kas, ņemot vērā failu 50 00:03:07,310 --> 00:03:11,490 un tad dots nosaukums failu, kas to rezultātus, un pēc tam piešķir numuru, kā arī, 51 00:03:11,490 --> 00:03:16,850 faktiski mainīt šo bitmap šī veselam skaitlim. 52 00:03:16,850 --> 00:03:19,240 Tad visbeidzot, mums ir Atgūt PSET. 53 00:03:19,240 --> 00:03:24,160 Mums ir dota atmiņas karti un tad ir atgūt visas fotogrāfijas 54 00:03:24,160 --> 00:03:25,920 kas ir nejauši svītrots, 55 00:03:25,920 --> 00:03:31,420 bet, kā mēs mācīties, faktiski nav dzēsti un izņemti no lietas materiāliem; 56 00:03:31,420 --> 00:03:38,470 Mēs tikko veida zaudēja kur viņi bija failā, bet mēs ejam, lai atgūtu to. 57 00:03:38,470 --> 00:03:44,950 >> Lieliski. Tā iet uz failu I / O konkrēti, tie ir viss saraksts funkcijas, kas jums tiks izmantojat. 58 00:03:44,950 --> 00:03:49,840 Jūs jau esat redzējuši mazliet pamatus fopen, fread un fwrite, 59 00:03:49,840 --> 00:03:54,350 bet mēs ejam apskatīt tālāk daži failu I / O funkcijas, piemēram, fputc, 60 00:03:54,350 --> 00:03:56,930 , kurā jūs vienkārši rakstīt vienu rakstzīmi laikā, 61 00:03:56,930 --> 00:04:02,000 līdz fseek, kur jūs veida pārvietot failu stāvokļa indikatoru uz priekšu un atpakaļ, 62 00:04:02,000 --> 00:04:05,770 un tad daži citi. Bet mēs iedziļināties ka mazliet vēlāk laikā PSET. 63 00:04:08,050 --> 00:04:13,100 >> Tātad, pirmkārt, vienkārši nokļūt failu I / O pirms mēs iedziļināties PSET, 64 00:04:13,100 --> 00:04:19,860 lai atvērtu failu, piemēram, to, kas jums jādara, ir faktiski noteikt rādītāju uz šo failu. 65 00:04:19,860 --> 00:04:22,710 Tātad mums ir fails * rādītāju. 66 00:04:22,710 --> 00:04:27,140 Šajā gadījumā, es esmu aicinot to jo rādītājs, jo tas būs mans infile. 67 00:04:27,140 --> 00:04:33,340 Un tāpēc es esmu gatavojas izmantot funkciju fopen un tad no faila nosaukumu 68 00:04:33,340 --> 00:04:36,360 un tad režīms, kurā es esmu būs darīšana ar failu. 69 00:04:36,360 --> 00:04:42,080 Tātad tur ir "R" šajā gadījumā par lasīšanu, "W" ierakstīšanai, un tad "" par pievienojot. 70 00:04:42,080 --> 00:04:44,270 Piemēram, ja jums ir darīšana ar INFILE 71 00:04:44,270 --> 00:04:47,310 un visi jūs vēlaties darīt, ir lasīt bitiem un baitiem saglabātos tur, 72 00:04:47,310 --> 00:04:50,420 tad jūs, iespējams, gatavojas vēlaties izmantot "r", kā savu režīmu. 73 00:04:50,420 --> 00:04:54,520 Ja jūs vēlaties, lai faktiski rakstīt, veida veikt jaunu failu, 74 00:04:54,520 --> 00:04:57,220 tad ko mēs gatavojamies darīt, ir, mēs esam gatavojas atvērt jaunu failu 75 00:04:57,220 --> 00:05:02,410 un izmantot "w" režīmā rakstīšanai. 76 00:05:02,410 --> 00:05:07,540 >> Tātad tad, kad jūs faktiski lasījums uz failiem, struktūra ir šāda. 77 00:05:07,540 --> 00:05:14,930 Vispirms jums ir rādītāju uz struct kas saturēs baiti ka jūs lasāt. 78 00:05:14,930 --> 00:05:19,830 Tāpēc, ka būs beigas atrašanās baiti ka jūs lasāt. 79 00:05:19,830 --> 00:05:23,360 Jūs pēc tam dodas uz norādītu izmēru, piemēram būtībā cik daudz baitu 80 00:05:23,360 --> 00:05:30,100 Jūsu programma ir lasīt uz failu, izmērs būtībā viens elements ir, 81 00:05:30,100 --> 00:05:32,620 un tad jūs gatavojas noteikt, cik daudz elementi jūs vēlaties lasīt. 82 00:05:32,620 --> 00:05:34,980 Un tad beidzot, jums ir jāzina, kur jūs lasāt no, 83 00:05:34,980 --> 00:05:37,580 lai būs jūsu in rādītājs. 84 00:05:37,580 --> 00:05:41,780 Es krāsu kodēta šiem, jo ​​fread ir arī ļoti līdzīga fwrite, 85 00:05:41,780 --> 00:05:47,050 izņemot jūs vēlaties, lai pārliecinātos, ka jūs izmantojat pareizo secību, 86 00:05:47,050 --> 00:05:51,960 pārliecinieties, ka jūs faktiski rakstiski vai lasīt no labās lietas. 87 00:05:54,910 --> 00:05:58,610 >> Tātad, tad kā iepriekš, ja mums ir elementa lielumu, kā arī par lielu elementu skaitu, 88 00:05:58,610 --> 00:06:00,600 tad mēs varam spēlēt aptuveni šeit mazliet. 89 00:06:00,600 --> 00:06:06,810 Teikt man ir suns struct un tā tad es gribu lasīt divi suņi laikā. 90 00:06:06,810 --> 00:06:12,450 Ko es varētu darīt, ir teikt lielums viena elementa būs lielumu viens suns 91 00:06:12,450 --> 00:06:14,770 un es esmu gatavojas faktiski lasīt divus no tiem. 92 00:06:14,770 --> 00:06:18,290 Alternatīvi, ko es varētu darīt, ir teikt, es esmu tikai gatavojas lasīt vienu elementu 93 00:06:18,290 --> 00:06:21,340 un ka viens elements būs lielums divi suņi. 94 00:06:21,340 --> 00:06:24,320 Tātad, tas ir analogs kā jūs varat veida spēlēt aptuveni ar izmēru un skaita 95 00:06:24,320 --> 00:06:28,250 Atkarībā no tā, ko ir vairāk intuitīvi jums. 96 00:06:28,250 --> 00:06:30,810 >> Labi. Tāpēc tagad mēs līdz rakstīšanas failus. 97 00:06:30,810 --> 00:06:36,880 Ja jūs vēlaties rakstīt failu, pirmais arguments ir faktiski kur jūs lasāt no. 98 00:06:36,880 --> 00:06:42,050 Tā ka būtībā tie dati, kas gatavojas rakstīt failā, 99 00:06:42,050 --> 00:06:44,490 kas ir ārpus rādītājs beigās. 100 00:06:44,490 --> 00:06:47,670 Tātad, ja jums ir darīšana ar PSET, pārliecinieties, ka Jums nav get sajaukt. 101 00:06:47,670 --> 00:06:50,480 Varbūt ir definīcijas blakus. 102 00:06:50,480 --> 00:06:58,090 Jūs varat pull definīcijas up rokasgrāmatā, uzrakstot vīrieti un tad fwrite, piemēram, 103 00:06:58,090 --> 00:06:59,950 terminālā, vai arī jūs varat nodot atpakaļ šo slaidu 104 00:06:59,950 --> 00:07:03,570 un pārliecinieties, ka jūs izmantojat pareizo vienu. 105 00:07:03,570 --> 00:07:08,700 Tātad vēlreiz, lai fwrite, kad jums ir fails, kas jūs vēlaties rakstīt par, 106 00:07:08,700 --> 00:07:14,290 kas būs pēdējais arguments un ka būs rādītājs uz šo failu. 107 00:07:14,290 --> 00:07:18,670 Tātad, tad tas, kā mēs galā ar rakstisku varbūt vairākas bytes laikā, 108 00:07:18,670 --> 00:07:21,820 bet ka vēlaties tikai rakstīt tikai vienu rakstzīmi. 109 00:07:21,820 --> 00:07:25,940 Kā mēs redzēsim vēlāk šajā piemēram, tādās bitkartes mums nāksies izmantot to. 110 00:07:25,940 --> 00:07:32,180 Tas ir, kad mēs varam izmantot fputc, būtībā tikai liekot vienu rakstzīmi laikā, CHR, 111 00:07:32,180 --> 00:07:37,050 uz failu rādītājs, un tas ir mūsu kas rādītājs tur. 112 00:07:38,700 --> 00:07:41,560 Lai tad, kad mēs cenšamies vai rakstīt failā, 113 00:07:41,560 --> 00:07:44,690 fails sekotu, kur mēs esam. 114 00:07:44,690 --> 00:07:47,810 Tātad, tas ir sava veida kursora, failu pozīcijas indikators. 115 00:07:47,810 --> 00:07:54,330 Un tāpēc, ja mēs rakstīt vai lasīt atkal failā, 116 00:07:54,330 --> 00:07:56,760 fails patiesībā atceras, kur tā ir, 117 00:07:56,760 --> 00:07:59,270 un tā tas turpinās no kurienes kursors. 118 00:07:59,270 --> 00:08:03,970 Tas var būt izdevīga, ja jūs vēlaties, lai, teiksim, lasot noteiktu summu, lai kaut ko darīt 119 00:08:03,970 --> 00:08:06,160 un pēc tam lasīt šādā apmērā, 120 00:08:06,160 --> 00:08:10,700 bet dažreiz mēs varētu vēlēties doties atpakaļ vai tiešām sākt no noteiktā atsauces vērtību. 121 00:08:10,700 --> 00:08:16,870 Tātad tad fseek funkcija, ko tas ir ļauj mums, lai pārvietotu kursoru noteiktā failā 122 00:08:16,870 --> 00:08:19,680 noteiktu skaitu baitu. 123 00:08:19,680 --> 00:08:24,260 Un tad ko mums ir jādara, ir norādīt, kur atsauces vērtība ir. 124 00:08:24,260 --> 00:08:31,520 Tātad, vai nu tas kustas uz priekšu vai atpakaļ, no kurienes kursors ir patlaban, 125 00:08:31,520 --> 00:08:35,750 vai mēs varam norādīt, ka tas būtu tikai kustēties no sākuma failu 126 00:08:35,750 --> 00:08:37,090 vai no beigām failu. 127 00:08:37,090 --> 00:08:41,230 Un lai jūs varētu pāriet uz negatīvu vai pozitīvu vērtību līdz summai, 128 00:08:41,230 --> 00:08:44,960 un kas būs sava veida pārvietotu kursoru nu uz priekšu vai atpakaļ. 129 00:08:46,170 --> 00:08:51,920 >> Pirms mēs nokļūt citās psets, kādi jautājumi par failu I / O? 130 00:08:53,860 --> 00:08:59,990 Labi. Kā mēs nokļūt vairāk piemēru, justies brīvi, lai apturētu mani jautājumiem. 131 00:08:59,990 --> 00:09:06,930 >> Tātad detektīvromāns, jūs pasniedza bitkartes failu līdzīgs šim sarkanā, uz slaida, 132 00:09:06,930 --> 00:09:14,510 un izskatās, ka tas - ķekars sarkaniem punktiem - un jums nav tiešām zināt, kas rakstīts. 133 00:09:14,510 --> 00:09:23,310 Ja jūs šķielēt, jums var būt iespēja redzēt nelielu zilganu krāsu iekšpusē vidū. 134 00:09:23,310 --> 00:09:26,270 Būtībā, tas ir, ja teksts tiek saglabāta. 135 00:09:26,270 --> 00:09:30,270 Tur bija slepkavība, kas notika, un mums ir nepieciešams, lai uzzinātu, kas to darīja. 136 00:09:30,270 --> 00:09:36,760 Lai to izdarītu, mums ir nepieciešams, lai veida pārveidot šo attēlu lasāmā formātā. 137 00:09:36,760 --> 00:09:42,740 Ja jūs puiši kādreiz radušās, reizēm būtu maz komplekti 138 00:09:42,740 --> 00:09:48,510 kur tu būtu ar palielināmo stiklu ar sarkanu filmu. Ikviens? Yeah. 139 00:09:48,510 --> 00:09:52,770 Tātad jūs būtu roku kaut kas līdzīgs šim, jūs būtu ar palielināmo stiklu 140 00:09:52,770 --> 00:09:58,130 ar sarkano plēvi pār to, jūs varētu nodot to pa attēlu, 141 00:09:58,130 --> 00:10:03,410 un jūs varētu redzēt ziņu paslēptas tajā. 142 00:10:03,410 --> 00:10:07,080 Mums nav palielināmais stikls ar sarkanu plēvi, tā vietā mēs spēsim veida radītu mūsu pašu 143 00:10:07,080 --> 00:10:09,060 Šajā PSET. 144 00:10:09,060 --> 00:10:15,760 Un tāpēc lietotājam būs ieejas detektīvromāns, tad pavediens. Bmp, 145 00:10:15,760 --> 00:10:18,800 tā ka infile, kas ir sarkanais punkts ziņa, 146 00:10:18,800 --> 00:10:23,550 un tad viņi saka verdict.bmp būs mūsu OUTFILE. 147 00:10:23,550 --> 00:10:27,900 Tātad tas notiek, lai izveidotu jaunu bitkartes attēlu līdzīgs pavediens 1 148 00:10:27,900 --> 00:10:32,600 izņemot lasāmā formātā, kur mēs varam redzēt slēpto ziņojumu. 149 00:10:32,600 --> 00:10:37,550 >> Tā kā mēs gribam būt darīšana ar rediģēšanu un manipulējot bitkartes par kādu, 150 00:10:37,550 --> 00:10:42,400 mēs spēsim veida nirt struktūrai šo bitkartes failus. 151 00:10:42,400 --> 00:10:48,130 Mēs devāmies pa šo mazliet lekciju, bet pieņemsim apskatīt tos dažas vairāk. 152 00:10:48,130 --> 00:10:51,740 Bitkartes būtībā tikai izkārtojums baitu 153 00:10:51,740 --> 00:10:55,790 kur mēs esam norādījuši baiti nozīmē ko. 154 00:10:55,790 --> 00:11:00,540 Tātad, šeit ir veids kā kartē no bitmap attēlu 155 00:11:00,540 --> 00:11:08,550 sakot, ka tas sākas ar dažiem header failus, sākas ar kādu informāciju tur. 156 00:11:08,550 --> 00:11:16,540 Jūs redzēsiet, ka aptuveni baitu numurs 14 lielums tiek norādīts no bitmap attēlu, 157 00:11:16,540 --> 00:11:18,520 un tas turpinās. 158 00:11:18,520 --> 00:11:23,810 Bet tad ko mēs esam patiesi ieinteresēti šeit sākas ap baitu skaitu 54. 159 00:11:23,810 --> 00:11:26,060 Mums ir šīs RGB trīskāršojas. 160 00:11:26,060 --> 00:11:30,760 Ko tas gatavojas darīt, ir jāiekļauj faktiskos pikseļi, krāsu vērtības. 161 00:11:30,760 --> 00:11:35,950 Viss iepriekš, ka galvenē ir daži informāciju 162 00:11:35,950 --> 00:11:41,240 atbilst attēla izmēru, no attēla platums, un augstums. 163 00:11:41,240 --> 00:11:44,930 Kad mēs iedziļināties polsterējumu vēlāk, mēs redzēsim, kāpēc attēla izmēra 164 00:11:44,930 --> 00:11:48,670 varētu būt atšķirīgs nekā platums vai augstums. 165 00:11:48,670 --> 00:11:54,240 Tātad, tad, lai pārstāvētu šos - šie bitmap attēli ir sekvences baitu - 166 00:11:54,240 --> 00:11:59,370 ko mēs varētu darīt, ir teikt labi, es esmu gatavojas atcerēties, ka pēc 14 indeksu, 167 00:11:59,370 --> 00:12:03,380 tas ir, ja izmērs ir, piemēram, bet tas, ko mēs gatavojamies darīt, lai padarītu šo vieglāk 168 00:12:03,380 --> 00:12:06,020 ir rezumēju to struct. 169 00:12:06,020 --> 00:12:08,880 Un tāpēc mums ir divi structs izgatavoti mums, BITMAPFILEHEADER 170 00:12:08,880 --> 00:12:10,440 un BITMAPINFOHEADER, 171 00:12:10,440 --> 00:12:14,840 un tāpēc, ja mēs lasām uz šo failu, pēc noklusējuma tas būs dodas kārtībā, 172 00:12:14,840 --> 00:12:22,360 un tāpēc, lai tas arī notiek, lai aizpildītu uz mainīgajiem kā biWidth un biSize. 173 00:12:25,270 --> 00:12:31,230 Un tad beidzot, katrs pikselis pārstāv trīs baitiem. 174 00:12:31,230 --> 00:12:35,500 Pirmais ir summa, zilā pikseļu, otrais ir summa zaļa, 175 00:12:35,500 --> 00:12:41,120 un visbeidzot, sarkanā, kur 0 ir būtībā nav zils vai nav zaļā summa vai ne sarkans 176 00:12:41,120 --> 00:12:43,720 un tad FF ir maksimālā vērtība. 177 00:12:43,720 --> 00:12:46,800 Tie ir heksadecimālais vērtības. 178 00:12:46,800 --> 00:12:53,870 Lai tad, ja mums ir FF0000, tad kas atbilst maksimālajai summai zila 179 00:12:53,870 --> 00:12:58,890 un tad nav zaļa un ne sarkans, tā tad tas dotu mums zilu pikseli. 180 00:12:58,890 --> 00:13:04,190 Tad, ja mums ir FF ir visā kuģa, tad tas nozīmē, ka mums ir baltā pikseļu. 181 00:13:04,190 --> 00:13:11,370 Tas ir sava veida pretī parasti, kad mēs sakām RGB. Tas patiesībā notiek BGR. 182 00:13:12,750 --> 00:13:18,990 >> Tātad, ja mēs faktiski izpētīt piemērs bitkartes attēlu - ļaujiet man pull vienu augšu šeit. 183 00:13:31,560 --> 00:13:33,830 Tas nedaudz mazu. 184 00:13:39,890 --> 00:13:47,840 Es esmu attālināt, un mēs varam redzēt tas pixelated. Izskatās bloki krāsu. 185 00:13:47,840 --> 00:13:50,110 Jums ir baltas blokus un tad sarkans blokiem. 186 00:13:50,110 --> 00:13:53,700 Ja tu spēlē Microsoft Paint, piemēram, jūs varētu darīt kaut ko līdzīgu, ka 187 00:13:53,700 --> 00:13:58,960 ko būtībā tikai krāsošana dažas kvadrātus noteiktā secībā. 188 00:13:58,960 --> 00:14:08,060 Tātad, tad ko tas nozīmē uz bitmap ir šāda. 189 00:14:08,060 --> 00:14:15,710 Šeit mums ir pirmais baltais pikseļi, ka visi 6 ir F s, un tad mums ir sarkanas pikseļi, 190 00:14:15,710 --> 00:14:19,910 norāda 0000FF. 191 00:14:19,910 --> 00:14:27,940 Un tā baitu ka mums ir secība norāda, kā bitmap attēlu gatavojas izskatās. 192 00:14:27,940 --> 00:14:32,230 Tātad, ko es esmu darījusi šeit ir tikai rakstīts visus šos bytes un tad iekrāsota sarkanā 193 00:14:32,230 --> 00:14:37,550 lai jūs varētu veida redzēt, ja jūs šķielēt mazliet, cik šāda veida norāda smiley sejas. 194 00:14:40,180 --> 00:14:46,390 >> Tā, ka bitmap attēlus darbs es iedomāties to būtībā kā režģī. 195 00:14:46,390 --> 00:14:54,940 Un tā pēc noklusējuma, katrs no režģa rindā ir jābūt reizinājumam 4 baiti. 196 00:15:00,520 --> 00:15:07,060 Ja mēs skatāmies bitmap attēlu, jūs aizpildot katrā vērtībā. 197 00:15:07,060 --> 00:15:17,370 Piemēram, jūs varētu būt sarkans šeit, zaļā šeit, zils šeit, 198 00:15:17,370 --> 00:15:24,950 bet jums ir pārliecināties, ka attēls tiek aizpildīts ar dalās četru baitu. 199 00:15:24,950 --> 00:15:32,200 Tātad, ja es vēlos, lai mana attēlu, trīs bloki plata, tad es būtu likts tukša vērtība 200 00:15:32,200 --> 00:15:35,640 Pēdējās vienas lai padarītu to dalās ar četri. 201 00:15:35,640 --> 00:15:39,530 Tātad, tad es varētu pievienot kaut ko mēs esam aicinot polsterējumu. 202 00:15:39,530 --> 00:15:43,750 Es esmu tikai gatavojas norādīt, ka ar x. 203 00:15:44,920 --> 00:15:54,160 Tagad saka, ka mēs vēlamies attēlu, kas ir 7 pikseļi garš, piemēram. 204 00:15:54,160 --> 00:15:59,550 Mums ir 1, 2, 3, 4, 5, 6, 7, 205 00:16:04,750 --> 00:16:07,000 un visu, kas ir aizpildīts ar krāsu. 206 00:16:07,000 --> 00:16:10,620 Tā, ka bitmap attēlus darbs ir, ka mums ir nepieciešams 8.. 207 00:16:10,620 --> 00:16:12,460 Tieši tagad mums ir 1, 2, 3, 4, 5, 6, 7. 208 00:16:12,460 --> 00:16:19,360 Mums nepieciešams 8 atstarpes bitmap attēlu, lai lasītu pareizi. 209 00:16:19,360 --> 00:16:25,600 Tātad, tad kāda mums ir jādara, ir pievienot tikai mazliet polsterējuma 210 00:16:25,600 --> 00:16:29,430 lai pārliecinātos, ka visi platumi ir vienota 211 00:16:29,430 --> 00:16:34,260 un ka visi platumi ir dalās ar 4. 212 00:16:42,110 --> 00:16:47,310 Un tāpēc es iepriekš norādīju, polsterējumu kā x vai neskaidro līniju, 213 00:16:47,310 --> 00:16:53,880 bet faktiskā bitmap attēlu polsterējums ir norādīta ar heksadecimālo 0. 214 00:16:53,880 --> 00:16:57,340 Lai būtu viena rakstzīme, 0. 215 00:16:58,980 --> 00:17:06,329 Kas varētu noderēt ir xxd komanda. 216 00:17:06,329 --> 00:17:11,220 Kas tas ir faktiski parāda jums, tāpat kā līdzīgs tam, ko es darīju pirms ar smaidiņu 217 00:17:11,220 --> 00:17:15,630 kad es patiešām iespiež, ko katra krāsa būtu par pikseli 218 00:17:15,630 --> 00:17:21,800 un tad krāsu kodēta tā, kad jūs darbināt xxd ar šādām komandām, 219 00:17:21,800 --> 00:17:28,670 tad tas būs tiešām izdrukāt kādi krāsas ir par tiem pikseļiem. 220 00:17:28,670 --> 00:17:33,810 Kas jums ir jādara, ir vairāk nekā šeit es norādītu, tāpat 54-s 221 00:17:33,810 --> 00:17:36,530 saka, ka es esmu gatavojas sākt ko 54 baits 222 00:17:36,530 --> 00:17:40,820 jo pirms tam, jāatceras, ja mēs atskatāmies uz kartes no bitkartes, 223 00:17:40,820 --> 00:17:42,690 ka viss galvenes informāciju un lietām, piemēram, ka. 224 00:17:42,690 --> 00:17:46,280 Bet tas, ko mēs patiešām rūp, ir faktiskais skaits, kas norāda uz krāsu. 225 00:17:46,280 --> 00:17:52,700 Tātad, pievienojot šajā karogu,-iem 54, tad mēs varam redzēt krāsu vērtības. 226 00:17:52,700 --> 00:17:56,020 Un nav jāuztraucas par sarežģītu karogiem un lietām, piemēram, ka. 227 00:17:56,020 --> 00:18:05,020 Jo problēma noteiktā spec, jums ir virzienos par to, kā izmantot xxd lai parādītu pikseļi. 228 00:18:07,070 --> 00:18:15,590 Tātad, ja jūs redzēt šeit, tas veida izskatās zaļās kastes, šī mazā lieta. 229 00:18:15,590 --> 00:18:23,610 Es esmu krāsu kodēta the 00ff00 kā būtībā saka nē Blue, zaļa daudz, un ne sarkano. 230 00:18:23,610 --> 00:18:26,370 Tāpēc, ka atbilst zaļu. 231 00:18:26,370 --> 00:18:31,920 Kā jūs redzat šeit, mēs redzam zaļu taisnstūri. 232 00:18:31,920 --> 00:18:36,660 Šī zaļā taisnstūris ir tikai 3 pikseļu plats, lai pēc tam, kas mums ir jādara 233 00:18:36,660 --> 00:18:44,350 lai pārliecinātos, ka attēls ir vairāku 4 plaša ir pievienot papildu polsterējumu. 234 00:18:44,350 --> 00:18:49,460 Un tad tas, kā jūs redzēt šo 0s šeit. 235 00:18:49,460 --> 00:18:54,510 Tas faktiski būs rezultāts jūsu Resize PSET, 236 00:18:54,510 --> 00:19:01,350 būtībā, ņemot mazu bitkartes un tad paplašinot to ar 4. 237 00:19:01,350 --> 00:19:09,380 Un tā, ko mēs redzam, ka patiesībā šis attēls ir 12 pikseļi plats, bet 12 ir dalās ar 4, 238 00:19:09,380 --> 00:19:12,940 un tāpēc mēs faktiski neredzu 0s beigās, jo mums nav nepieciešams pievienot jebkuru 239 00:19:12,940 --> 00:19:19,070 jo tas ir pilnībā polsterētas. Tas nav neviena vairāk vietas. 240 00:19:20,720 --> 00:19:23,470 >> Labi. Kādi jautājumi par polsterējumu? 241 00:19:25,150 --> 00:19:27,460 Labi. Atdzist. 242 00:19:27,460 --> 00:19:32,520 >> Kā jau minēju iepriekš, bitkartes ir tikai secība baitu. 243 00:19:32,520 --> 00:19:39,170 Un tā, kas mums ir, nevis nepieciešams, lai sekotu tieši kuri skaita baits 244 00:19:39,170 --> 00:19:47,050 atbilst noteiktam elementu, mēs faktiski esam izveidojuši struct pārstāvēt to. 245 00:19:47,050 --> 00:19:50,930 Tātad, kas mums ir RGBTRIPLE struktūrai. 246 00:19:50,930 --> 00:19:54,590 Ikreiz, kad jums ir gadījums RGB triple, 247 00:19:54,590 --> 00:20:00,970 jo tas ir veids definēt struct, tad jūs varat piekļūt rgbtBlue mainīgo, 248 00:20:00,970 --> 00:20:09,520 Tāpat zaļā un sarkanā mainīgie, kas norāda, cik daudz zila, zaļa un sarkana, 249 00:20:09,520 --> 00:20:11,580 attiecīgi, jums ir. 250 00:20:11,580 --> 00:20:16,800 >> Tātad, ja mums ir zilo mainīgo uz 0, zaļā iestatīts uz FF, 251 00:20:16,800 --> 00:20:22,060 kas ir maksimālā vērtība var būt, un tad sarkana mainīgais iestatīts uz 0, 252 00:20:22,060 --> 00:20:27,870 tad kāda krāsa būtu tas īpaši RGB triple pārstāv? >> [Students] Zaļā. 253 00:20:27,870 --> 00:20:29,150 Zaļa. Tieši tā. 254 00:20:29,150 --> 00:20:34,480 Tas būs noderīgi zināt, ka, ja jums ir gadījums RGB triple, 255 00:20:34,480 --> 00:20:41,340 Jūs faktiski var piekļūt krāsu daudzumu - zils, zaļš un sarkans - atsevišķi. 256 00:20:43,350 --> 00:20:54,900 >> Tagad, ka mēs esam runājuši par struktūru, kas, pieņemsim apskatīt BMP failu. 257 00:20:54,900 --> 00:20:57,870 Tie ir structs par jums. 258 00:20:57,870 --> 00:21:01,820 Šeit mums ir BITMAPFILEHEADER struct. 259 00:21:01,820 --> 00:21:07,610 Interese ir izmērs. 260 00:21:07,610 --> 00:21:12,660 Vēlāk, mums ir informācija header, kas ir vēl dažas lietas, kas ir interesanti mums, 261 00:21:12,660 --> 00:21:15,480 proti izmērs, platums, un augstums. 262 00:21:15,480 --> 00:21:19,170 Kā mēs iedziļināties vēlāk, kad jūs lasīt uz failu, 263 00:21:19,170 --> 00:21:25,500 tas automātiski skan, jo mēs esam noteikt kārtību, lai būtu tāds pats. 264 00:21:25,500 --> 00:21:31,990 Tātad biSize būs tiesības baitus kas atbilst faktiskajām attēla izmēru. 265 00:21:34,700 --> 00:21:40,500 Un tad šeit, visbeidzot, kā mēs esam runājuši par to, mums ir RGBTRIPLE typedef struktūrai. 266 00:21:40,500 --> 00:21:46,840 Mums ir rgbtBlue, zaļš un sarkans saistīti ar to. 267 00:21:48,210 --> 00:21:49,340 >> Lieliski. Labi. 268 00:21:49,340 --> 00:21:56,360 Tagad, kad mēs saprotam bitkartes mazliet, saprotu, ka mums ir faila galvene 269 00:21:56,360 --> 00:22:00,790 un informācija galvene saistīts ar to un tad pēc tam, mums ir daudz ko interesantu 270 00:22:00,790 --> 00:22:05,110 no krāsām, un šīs krāsas pārstāv RGBTRIPLE structs, 271 00:22:05,110 --> 00:22:12,710 un tie, savukārt, ir trīs vērtības, kas saistītas ar zilo, zaļo, un sarkanā krāsā. 272 00:22:12,710 --> 00:22:17,270 >> Tāpēc tagad, mēs varam veida domā par Atgūt mazliet. 273 00:22:17,270 --> 00:22:20,130 Žēl. Padomā par detektīvromāns. 274 00:22:20,130 --> 00:22:25,750 Kad mums ir mūsu pavediens failu, tad ko mēs vēlamies darīt, ir lasīt to pixel by pixel 275 00:22:25,750 --> 00:22:33,860 un tad kaut mainīt šos pikseļus, lai mēs varētu izvadīt to lasāmā formātā. 276 00:22:33,860 --> 00:22:41,020 Un tāpēc, lai atveidotu to, mēs esam gatavojas rakstīt pixel by pixel iekļaušanu verdict.bmp failā. 277 00:22:41,020 --> 00:22:45,120 Tas ir sava veida daudz darāmā. Mēs saprotam, ka. 278 00:22:45,120 --> 00:22:49,860 Tātad, ko mēs esam darījuši, ir, mēs esam faktiski sniedz jums ar copy.c. 279 00:22:49,860 --> 00:22:57,610 Kas copy.c dara, ir tikai padara precīzu kopiju no konkrētā bitkartes failu un pēc tam izvada to. 280 00:22:57,610 --> 00:23:01,900 Tātad tas jau atvērts fails jums, skan pixel by pixel, 281 00:23:01,900 --> 00:23:04,510 un tad raksta to savos izejas failu. 282 00:23:04,510 --> 00:23:07,080 >> Pieņemsim to apskatīt to. 283 00:23:13,390 --> 00:23:18,290 Šis ir nodrošināt pareizu lietošanu, 284 00:23:18,290 --> 00:23:22,640 iegūt filenames šeit. 285 00:23:22,640 --> 00:23:29,940 Kas tas ir tas nosaka ievades failu, lai tas, ko mēs esam pieņemts ar INFILE šeit, 286 00:23:29,940 --> 00:23:34,750 kas ir mūsu otrais komandrindas arguments. 287 00:23:34,750 --> 00:23:37,640 Pārbaudes, lai pārliecinātos, ka mēs varam atvērt failu. 288 00:23:38,960 --> 00:23:44,860 Pārbaudes, lai pārliecinātos, ka mēs varam veikt jaunu OUTFILE šeit. 289 00:23:45,630 --> 00:23:53,270 Tad ko tas dara šeit, tas tikai pamatā sāk lasīt uz bitkartes failu no sākuma. 290 00:23:53,270 --> 00:23:56,700 Sākums, kā mēs zinām, satur BITMAPFILEHEADER, 291 00:23:56,700 --> 00:24:03,200 un tāpēc šie biti sekvencēm būs tieši aizpildīt BITMAPFILEHEADER. 292 00:24:03,200 --> 00:24:07,940 Tātad, ko mēs esam šeit ir saprotams, ka BITMAPFILEHEADER BF - 293 00:24:07,940 --> 00:24:13,150 tas ir mūsu jaunais tipa mainīgais BITMAPFILEHEADER - 294 00:24:13,150 --> 00:24:22,560 mēs spēsim likt iekšā bf ko mēs lasām no in rādītājs, kas ir mūsu infile. 295 00:24:22,560 --> 00:24:23,970 Cik daudz mēs lasīt? 296 00:24:23,970 --> 00:24:32,160 Mēs lasām, cik daudz baitu mums ietver pilnu BITMAPFILEHEADER. 297 00:24:32,160 --> 00:24:34,660 Tāpat, ka tas, ko mēs darām par info galveni. 298 00:24:34,660 --> 00:24:39,010 Tāpēc mēs turpinām pa mūsu faila INFILE, 299 00:24:39,010 --> 00:24:44,360 un mēs esam lasījums šos bitus un baitus, un mēs tapām tos tieši 300 00:24:44,360 --> 00:24:47,880 uz šiem mainīgajiem lielumiem, kas mēs nesam instancēs. 301 00:24:49,370 --> 00:24:53,800 Šeit mēs esam tikai pārliecinoties, ka Bitkartes ir bitkarte. 302 00:24:57,670 --> 00:25:01,030 >> Tagad mums ir OUTFILE, vai ne? 303 00:25:01,030 --> 00:25:04,420 Tā kā tas nozīmē, kad mēs to izveidotu, tas ir būtībā tukša. 304 00:25:04,420 --> 00:25:07,710 Tāpēc mums ir būtībā izveidot jaunu bitkarti no nulles. 305 00:25:07,710 --> 00:25:12,280 Ko mēs darām, ir mums ir jāpārliecinās, ka mēs nokopēt faila galvene 306 00:25:12,280 --> 00:25:16,850 un informācija galveni tāpat kā INFILE ir. 307 00:25:16,850 --> 00:25:22,850 Ko mēs darām, ir mūsu rakstīt - un atcerēties, ka BF ir mainīgs 308 00:25:22,850 --> 00:25:29,300 tipa BITMAPFILEHEADER, lai to, ko mēs darām, ir mēs tikai izmantot šo saturu 309 00:25:29,300 --> 00:25:34,980 rakstīt uz outfile. 310 00:25:36,550 --> 00:25:38,510 Lūk, atcerieties, ka mēs runājām par polsterējumu, 311 00:25:38,510 --> 00:25:47,820 cik tas ir svarīgi, lai pārliecinātos, ka pikseļu, kas mums ir summa ir dalās ar 4. 312 00:25:47,820 --> 00:25:52,790 Tas ir diezgan noderīgs formula, lai aprēķinātu, cik daudz polsterējuma esat 313 00:25:52,790 --> 00:25:57,670 ņemot platums no jūsu failu. 314 00:25:57,670 --> 00:26:04,120 Es gribu jūs guys atcerēties, ka copy.c mums ir formula, lai aprēķinātu polsterējumu. 315 00:26:04,120 --> 00:26:07,970 Labi? Tāpēc ikviens atcerēties. Lieliski. 316 00:26:07,970 --> 00:26:14,050 Tātad, tad kāda copy.c dara nākamais ir tas vairākkārt uzsvērts pār visu scanlines. 317 00:26:14,050 --> 00:26:23,730 Tas iet cauri rindām vispirms un tad saglabā katru trīskāršu ka tā skan 318 00:26:23,730 --> 00:26:26,920 un tad raksta to uz outfile. 319 00:26:26,920 --> 00:26:33,120 Tātad, tad šeit mēs esam lasījums tikai viena RGB Triple laikā 320 00:26:33,120 --> 00:26:39,860 un pēc tam liekot ka paši Triple uz outfile. 321 00:26:41,120 --> 00:26:48,340 Kutelīgs daļa ir tas, ka polsterējums nav RGB triple, 322 00:26:48,340 --> 00:26:55,200 un tā mēs varam ne tikai lasīt, ka polsterējums summa RGB trīskāršojas. 323 00:26:55,200 --> 00:27:01,460 Kas mums ir jādara, ir faktiski tikai pārvietot mūsu failu stāvokļa indikatoru, pārvietot mūsu kursoru, 324 00:27:01,460 --> 00:27:06,840 veidam izlaist visu polsterējumu, lai mēs esam pie nākamajā rindā. 325 00:27:06,840 --> 00:27:12,990 Un tad ko tas dara, ir kopija parāda, kā jūs varētu vēlēties pievienot polsterējumu. 326 00:27:12,990 --> 00:27:14,990 Tāpēc mēs esam aprēķināts, cik polsterējums mums vajag, 327 00:27:14,990 --> 00:27:18,220 lai tas nozīmē, ka mums ir nepieciešams polsterējums skaitu 0S. 328 00:27:18,220 --> 00:27:24,510 Kas tas ir par cilpu, kas liek polsterējums skaitu 0S mūsu outfile. 329 00:27:24,510 --> 00:27:31,170 Un tad beidzot, aizveriet abus failus. Aizverot INFILE kā arī OUTFILE. 330 00:27:31,170 --> 00:27:34,870 >> Tātad tas, kā copy.c darbi, 331 00:27:34,870 --> 00:27:37,430 un kas būs diezgan noderīga. 332 00:27:39,720 --> 00:27:43,750 Nevis tikai faktiski tieši iekopējot to 333 00:27:43,750 --> 00:27:46,800 vai vienkārši skatoties uz to un rakstīt neatkarīgi vēlaties, 334 00:27:46,800 --> 00:27:49,440 Jūs varētu vienkārši vēlaties izpildīt šo komandu terminālā, 335 00:27:49,440 --> 00:27:54,520 cp copy.c whodunit.c, kas radīs jaunu failu, whodunit.c, 336 00:27:54,520 --> 00:27:58,330 kas satur tieši tādu pašu saturu, kā kopiju dara. 337 00:27:58,330 --> 00:28:03,880 Tātad tad ko mēs varam darīt, ir izmantot šo kā pamatu, uz kura būvēt un rediģēt 338 00:28:03,880 --> 00:28:06,900 mūsu Detektīvromāns failu. 339 00:28:08,500 --> 00:28:14,670 >> Tie ir mūsu to-dos darīt detektīvromāns, bet ko copy.c dara 340 00:28:14,670 --> 00:28:16,730 ir faktiski rūpējas par lielāko daļu no tiem par mums. 341 00:28:16,730 --> 00:28:21,900 Tāpēc viss, kas mums jādara tālāk, ir jāmaina pikseļus, kā nepieciešams 342 00:28:21,900 --> 00:28:25,920 faktiski veikt failu lasāma. 343 00:28:25,920 --> 00:28:32,960 Atcerieties, ka par konkrēto pikseli trīskāršu, tāpēc par konkrētu tipa mainīgais RGBTRIPLE, 344 00:28:32,960 --> 00:28:35,990 Jūs varat piekļūt zilā, zaļā un sarkanā vērtības. 345 00:28:35,990 --> 00:28:38,670 Tas notiek, lai noderēs, jo, ja jūs varat piekļūt tiem, 346 00:28:38,670 --> 00:28:41,770 tas nozīmē, ka jūs varat arī pārbaudīt tos, 347 00:28:41,770 --> 00:28:45,430 un tas nozīmē, ka jūs varat arī mainīt. 348 00:28:45,430 --> 00:28:49,430 >> Tātad, kad mēs devāmies atpakaļ uz mūsu sarkanā palielināmā stikla, piemēram, 349 00:28:49,430 --> 00:28:53,390 būtībā, ka rīkojās kā sava veida filtrs mums. 350 00:28:53,390 --> 00:28:58,160 Tātad, ko mēs vēlamies darīt, ir, mēs vēlamies, lai filtrētu visus trīskāršojas, kas nāk iekšā 351 00:28:58,160 --> 00:29:01,240 Ir vairāki dažādi veidi, kā to darīt. 352 00:29:01,240 --> 00:29:07,100 Būtībā, jums var būt jebkāda veida filtru vēlaties. 353 00:29:07,100 --> 00:29:09,890 Varbūt jūs vēlaties mainīt visas sarkanās pikseļus 354 00:29:09,890 --> 00:29:13,570 vai varbūt jūs vēlaties mainīt atšķirīgu krāsu pikseļu uz citu krāsu. 355 00:29:13,570 --> 00:29:15,400 Tas ir atkarīgs no jums. 356 00:29:15,400 --> 00:29:19,580 Atcerieties, ka jūs varat pārbaudīt, kādi krāsu pikseļu 357 00:29:19,580 --> 00:29:23,000 un tad jūs varat arī mainīt to, kā jūs iet cauri. 358 00:29:24,410 --> 00:29:26,420 >> Labi. Tātad tas ir Detektīvromāns. 359 00:29:26,420 --> 00:29:32,760 Kad jūs palaist detektīvromāns, jūs zināt, kas ir par nozieguma vaininieks bija. 360 00:29:32,760 --> 00:29:35,540 >> Tagad mēs esam gatavojas doties uz Mainīt lielumu. 361 00:29:35,540 --> 00:29:37,990 Mēs ejam, lai joprojām būtu darīšana ar bitkartes. 362 00:29:37,990 --> 00:29:40,750 Ko mēs darīsim, ir mums nāksies ievades bitmap 363 00:29:40,750 --> 00:29:45,890 un tad mēs spēsim iziet ar numuru un tad saņemt OUTFILE bitmap 364 00:29:45,890 --> 00:29:51,380 ja tas būtībā mūsu infile samazināts ar n. 365 00:29:54,670 --> 00:30:01,450 Saka mans fails bija tikai viens pikseļu liels. 366 00:30:01,450 --> 00:30:09,100 Tad, ja mans n bija 3, zvīņošanās ar 3, tad es atkārtoju, ka lielums n reižu skaitu, 367 00:30:09,100 --> 00:30:14,410 tā 3 reizes, un pēc tam arī mērogot, 3 reizes, kā arī. 368 00:30:14,410 --> 00:30:17,840 Tātad jūs redzat, es esmu mērogošana to vertikāli, gan horizontāli. 369 00:30:17,840 --> 00:30:19,680 >> Un tad šeit ir piemērs. 370 00:30:19,680 --> 00:30:27,590 Ja jums ir n = 2, jūs redzēsiet, ka pirmā zilā pikseļu tur atkārto divas reizes 371 00:30:27,590 --> 00:30:30,930 horizontāli, kā arī divas reizes vertikāli. 372 00:30:30,930 --> 00:30:38,040 Un tad turpina, un tāpēc jums ir tieša mērogošanas savu sākotnējo attēlu ar divi. 373 00:30:40,920 --> 00:30:47,600 >> Lai tad, ja mēs precīzi noteikt pseudocode par to, mēs vēlamies, lai atvērtu failu. 374 00:30:47,600 --> 00:30:49,880 Un tad zinot, ka, ja mēs ejam atpakaļ šeit, 375 00:30:49,880 --> 00:30:54,540 mēs redzam, ka par outfile platums būs atšķirīgs nekā platums par INFILE. 376 00:30:54,540 --> 00:30:56,130 Ko tas nozīmē? 377 00:30:56,130 --> 00:31:01,230 Tas nozīmē, ka mūsu galvenes informāciju gatavojas mainīt. 378 00:31:01,230 --> 00:31:03,790 Un tā, ko mēs vēlamies darīt, ir atjaunināt header info, 379 00:31:03,790 --> 00:31:11,820 zinot, ka tad, kad mēs lasīt failus, ja jūs darbojas uz copy.c regulējumu, 380 00:31:11,820 --> 00:31:17,570 mums jau ir mainīgais, kas norāda kāda izmērs ir, un lietas, piemēram, ka. 381 00:31:17,570 --> 00:31:24,060 Tātad, kad jums ir, ka, ko jūs varētu vēlēties darīt, ir mainīt šos īpašos mainīgos. 382 00:31:24,060 --> 00:31:29,380 Atcerieties, ja jums ir struct, kā jūs varat piekļūt mainīgos šajā. 383 00:31:29,380 --> 00:31:32,080 Jūs izmantot dot operatoram, vai ne? 384 00:31:32,080 --> 00:31:36,420 Tātad, tad, izmantojot šo, jūs zināt, ka jums būs nepieciešams, lai mainītu galvenes info. 385 00:31:36,480 --> 00:31:41,030 Tātad šeit ir tikai saraksts ar faktisko elementu, kas notiek, mainās failā. 386 00:31:41,030 --> 00:31:45,180 Faila izmērs būs, mainās, attēlu, kā arī platums un augstums. 387 00:31:45,180 --> 00:31:50,080 Tātad, tad dodas atpakaļ uz kartes no bitkartes, 388 00:31:50,080 --> 00:31:57,730 apskatīt, vai tas ir faila galvene vai informācija galveni, kas satur šo informāciju 389 00:31:57,730 --> 00:32:00,920 un tad mainīt pēc vajadzības. 390 00:32:05,010 --> 00:32:12,470 Atkal, teiksim kp copy.c resize.c. 391 00:32:12,470 --> 00:32:19,270 Tas nozīmē, ka resize.c tagad ir viss, kas ir ietverts iekšā kopiju 392 00:32:19,270 --> 00:32:24,490 jo kopija sniedz mums veids, kā lasīt katram scanline pikseli pa pikselim. 393 00:32:24,490 --> 00:32:29,860 Izņemot tagad, nevis tikai mainot vērtības, piemēram, mēs darījām detektīvromāns, 394 00:32:29,860 --> 00:32:37,980 ko mēs vēlamies darīt, ir, mēs vēlamies rakstīt vairākos pikseļos 395 00:32:37,980 --> 00:32:43,580 kamēr mūsu n ir lielāks par 1. 396 00:32:43,580 --> 00:32:47,110 >> Tad ko mēs vēlamies darīt, ir, mēs vēlamies, lai stiept to horizontāli ar n, 397 00:32:47,110 --> 00:32:50,490 kā arī stiept to vertikāli ar n. 398 00:32:50,490 --> 00:32:52,710 Kā varētu mums darīt? 399 00:32:52,710 --> 00:32:56,890 Teikt savu n ir 2 un jums ir šī dota INFILE. 400 00:32:56,890 --> 00:32:58,730 Kursoru gatavojas sākt pie pirmā, 401 00:32:58,730 --> 00:33:03,530 un ko jūs vēlaties darīt, ja n ir 2, jūs vēlaties drukāt 2 no tām. 402 00:33:03,530 --> 00:33:05,490 Tātad jūs drukāt 2 no tām. 403 00:33:05,490 --> 00:33:10,830 Tad jūsu kursors gatavojas pāriet uz nākamo pikseļu, kas ir sarkanā viens, 404 00:33:10,830 --> 00:33:18,400 un tas notiek, lai izdrukātu 2 no tiem sarkanvīniem, pievienojot to uz ko tas ir darīts līdz šim. 405 00:33:18,400 --> 00:33:26,280 Tad kursors pārvietosies uz nākamo pikseļu un izdarīt 2 no tām. 406 00:33:26,280 --> 00:33:37,180 Ja paskatās atpakaļ uz copy.c sistēmā, ko tas dara tieši šeit 407 00:33:37,180 --> 00:33:42,830 ir tas rada jaunu gadījumu RGB triple, jaunu mainīgo sauc triple. 408 00:33:42,830 --> 00:33:50,500 Un šeit, kad tas skan uz to, tas skan no 1 INFILE RGBTRIPLE 409 00:33:50,500 --> 00:33:53,470 un saglabā to iekšpusē šī triple mainīgs. 410 00:33:53,470 --> 00:33:57,590 Tātad, tad jums tiešām ir mainīgs pārstāv šo konkrēto pikseli. 411 00:33:57,590 --> 00:34:05,290 Tad, kad jūs rakstāt, ko jūs varētu vēlēties darīt, ir iesaiņot fwrite paziņojumu stājās uz cilpas 412 00:34:05,290 --> 00:34:11,080 ka raksta to savā outfile tik reižu, cik nepieciešams. 413 00:34:17,449 --> 00:34:20,100 Tas ir pavisam vienkārši. 414 00:34:20,200 --> 00:34:27,590 Tikai pamatā atkārto rakstīšanas procesu n reizes numuru mērogam to horizontāli. 415 00:34:27,590 --> 00:34:32,969 >> Bet tad mums ir jāatceras, ka mūsu polsterējums gatavojas mainīt. 416 00:34:47,350 --> 00:34:53,020 Agrāk, teiksim, mums bija kaut par 3 garumā. 417 00:34:53,020 --> 00:35:00,130 Tad mēs varētu vienkārši pievienot cik daudz polsterējums? Tikai viens vairāk, lai padarītu to dalās ar 4. 418 00:35:00,130 --> 00:35:10,480 Bet saku mēs mērogošanas šo konkrēto attēlu, n = 2. 419 00:35:10,480 --> 00:35:16,300 Tātad, tad cik zili pikseļi mums būtu beigās? Mums būtu 6. 420 00:35:16,300 --> 00:35:21,470 1, 2, 3, 4, 5, 6. Labi. 421 00:35:21,470 --> 00:35:26,580 6 nav dalās ar 4. Kas tuvākajam gada 4? Tas būs 8. 422 00:35:26,580 --> 00:35:33,200 Tāpēc mēs esam patiešām nāksies 2 rakstzīmes polsterējumu tur. 423 00:35:33,200 --> 00:35:38,720 >> Vai kāds atceras, ja mums ir formula, lai aprēķinātu polsterējumu 424 00:35:38,720 --> 00:35:41,350 un ja tas varētu būt? 425 00:35:41,350 --> 00:35:45,160 [Dzirdams studentu reaģēšanas] >> Jā, copy.c. Tiesības. 426 00:35:45,160 --> 00:35:49,800 Ir arī copy.c formulu, lai aprēķinātu, cik daudz polsterējuma esat 427 00:35:49,800 --> 00:35:53,810 dod īpašu platumu bitkartes attēlu. 428 00:35:53,810 --> 00:36:02,950 Tātad, tad tas būs noderīgi, ja jums ir nepieciešams pievienot noteiktu daudzumu polsterējumu 429 00:36:02,950 --> 00:36:06,160 reāli izrēķināt cik daudz polsterējums nepieciešams pievienot. 430 00:36:10,820 --> 00:36:15,850 Bet viena piezīme, lai gan, ir tas, ka jūs vēlaties, lai pārliecinātos, ka jūs izmantojat pareizo izmēru. 431 00:36:15,850 --> 00:36:21,410 Tikai jābūt uzmanīgiem, jo ​​jūs būtībā būs darīšana ar divām bitmap attēlu. 432 00:36:21,410 --> 00:36:23,410 Jūs vēlaties pārliecināties, ka jūs izmantojat pareizo vienu. 433 00:36:23,410 --> 00:36:26,820 Kad esat Aprēķinot polsterējums par outfile, jūs vēlaties izmantot platumu outfile 434 00:36:26,820 --> 00:36:29,860 un nevis platums iepriekšējā. 435 00:36:29,860 --> 00:36:37,240 >> Lieliski. Šāda veida rūpējas stiepjas veselu bitkartes attēlu horizontāli. 436 00:36:37,240 --> 00:36:41,290 Bet tas, ko mēs vēlamies darīt, ir faktiski stiept to vertikāli, kā arī. 437 00:36:41,290 --> 00:36:48,760 Tas būs mazliet trickier, jo, kad mēs esam pabeiguši kopēšanu rindu 438 00:36:48,760 --> 00:36:51,580 un rakstot šīs rindas, mūsu kursors būs beigās. 439 00:36:51,580 --> 00:36:56,210 Tātad, ja mēs lasām vēlreiz, tad tas ir tikai gatavojas lasīt uz nākamo rindiņu. 440 00:36:56,210 --> 00:37:03,660 Tātad, ko mēs vēlamies darīt, ir veida atrast kādu veidu, kopējot tos rindas atkal 441 00:37:03,660 --> 00:37:12,500 vai vienkārši veida pieņemtu šo rindu un tad pārrakstot to vēlreiz. 442 00:37:14,380 --> 00:37:17,940 Kā es veida pieminēja, ir vairāki dažādi veidi, kā to darīt. 443 00:37:17,940 --> 00:37:23,040 Ko jūs varētu darīt, ir, kā jūs iet cauri, un iepazīšanās ar īpašu scanline 444 00:37:23,040 --> 00:37:28,560 un mainot to, kā nepieciešams, tad veida veikala visus šos masīva pikseļi. 445 00:37:28,560 --> 00:37:36,350 Tad vēlāk par jums zina, ka jums ir nepieciešams izdrukāt ka masīvu atkal, 446 00:37:36,350 --> 00:37:39,830 un lai jūs varat izmantot šo masīvu darīt. 447 00:37:39,830 --> 00:37:44,500 Vēl viens veids, kā to izdarīt, ir, jūs varētu kopēt uz leju vienu rindu, 448 00:37:44,500 --> 00:37:47,950 saprotu, ka jums ir nepieciešams, lai kopētu, ka atkal tik tiešām pārvietot kursoru, 449 00:37:47,950 --> 00:37:50,950 un kas notiek, lai būt, izmantojot metodi fseek. 450 00:37:50,950 --> 00:37:56,410 Jūs varētu pārvietot jūsu kursors visu ceļu atpakaļ un tad atkārtojiet kopēšanas procesu vēlreiz. 451 00:37:56,410 --> 00:38:03,960 >> Tātad, ja mūsu mērogošana skaits ir n, tad cik reizes mums ir jāiet atpakaļ 452 00:38:03,960 --> 00:38:10,500 un pārrakstīt līniju? >> [Students] n - 1. >> Jā, perfekta. n - 1. 453 00:38:10,500 --> 00:38:14,390 Mēs esam darījuši jau vienreiz, tāpēc tad mēs vēlamies atkārtot atgriežās procesu 454 00:38:14,390 --> 00:38:17,460 n - 1 summa reizes. 455 00:38:22,730 --> 00:38:25,860 Labi. Tātad jums ir jūsu resize funkciju. 456 00:38:25,860 --> 00:38:34,360 >> Tagad mēs varam nokļūt patiesi jautru daļa, mana mīļākā PSET, kas ir atgūt. 457 00:38:34,360 --> 00:38:39,580 Vietā bitkartes, šoreiz mums ir darīšana ar JPEG. 458 00:38:39,580 --> 00:38:43,370 Mēs esam patiešām nav dota failu tieši no JPEG, 459 00:38:43,370 --> 00:38:46,600 mēs esam dota būtībā raw atmiņas kartes formātu. 460 00:38:46,600 --> 00:38:51,790 Un tāpēc tas ir mazliet info un atkritumu vērtībām sākumā, 461 00:38:51,790 --> 00:38:57,240 un tad tas sākas un tā ir ķekars JPEG failus. 462 00:38:57,240 --> 00:39:03,430 Tomēr mēs esam pasniedza kartīti, kur mēs esam svītrots fotogrāfijas; 463 00:39:03,430 --> 00:39:08,300 būtībā, mēs esam aizmirsuši, kur fotogrāfijas ir atrodas uz kartes. 464 00:39:08,300 --> 00:39:12,770 Tātad, tad mūsu uzdevums Atgūt ir iet caur šo apliecību formātā 465 00:39:12,770 --> 00:39:16,500 un atrast tās bildes vēlreiz. 466 00:39:16,500 --> 00:39:23,990 >> Par laimi, no JPEG failus un kartes failu struktūra ir nedaudz noderīga. 467 00:39:23,990 --> 00:39:28,850 Tas noteikti varētu būt mazliet trickier, ja tā nav šajā konkrētajā formātā. 468 00:39:28,850 --> 00:39:40,160 Katru JPEG fails patiesībā sākas ar diviem iespējamiem sekvences, kas minēts iepriekš. 469 00:39:40,160 --> 00:39:42,970 Būtībā, ja jums ir jauna JPEG failu, 470 00:39:42,970 --> 00:39:52,720 tas sākas ar vai nu secīgi ffd8 ffe0 vai otrs, ffd8 ffe1. 471 00:39:52,720 --> 00:39:59,530 Vēl viena noderīga lieta zināt, ka JPEG tiek uzglabāti contiguously. 472 00:39:59,530 --> 00:40:03,380 Tātad, ja viens JPEG fails beidzas, otrs sākas. 473 00:40:03,380 --> 00:40:07,070 Tāpēc tur vairs nav in-starp vērtībām tur veida. 474 00:40:07,070 --> 00:40:15,510 Tiklīdz jūs hit sākums JPEG, ja jūs esat jau lasījis JPEG, 475 00:40:15,510 --> 00:40:21,800 Jūs zināt, ka esat sasniedzis beigas iepriekšējo un nākamo sākumu. 476 00:40:21,800 --> 00:40:25,890 >> Veidam iztēloties šo, es shematisks. 477 00:40:25,890 --> 00:40:36,910 Vēl viens par JPEG lieta ir tā, ka mēs varam lasīt tos sekvences no 512 baitu laikā, 478 00:40:36,910 --> 00:40:39,380 Tāpat ar sākuma kartes. 479 00:40:39,380 --> 00:40:43,370 Mums nav nepieciešams pārbaudīt katru baitu, jo tas būtu sūkāt. 480 00:40:43,370 --> 00:40:48,200 Tā vietā, ko mēs varam darīt, ir faktiski tikai lasīt 512 bytes laikā 481 00:40:48,200 --> 00:40:54,700 un tad, nevis pārbaudīt starp tiem šajās tiny maz šķēles, 482 00:40:54,700 --> 00:40:58,640 mēs varam tikai pārbaudīt sākumā 512 baitiem. 483 00:40:58,640 --> 00:41:02,570 Būtībā šajā attēlā, ko jūs redzat, ir sākumā uz kartes, 484 00:41:02,570 --> 00:41:08,700 Jums ir vērtības, kas nav īsti atbilstoši faktiskajām JPEG sevi. 485 00:41:08,700 --> 00:41:15,830 Bet tad ko man ir zvaigzne norādīt vienu no diviem starta secības JPEG. 486 00:41:15,830 --> 00:41:19,910 Tātad, ja jūs redzat kādu zvaigzni, jūs zināt, ka jums ir JPEG failu. 487 00:41:19,910 --> 00:41:25,030 Un tad katru JPEG fails būs daži dalās ar 512 baitiem 488 00:41:25,030 --> 00:41:27,880 bet ne vienmēr tās pašas kompleksās. 489 00:41:27,880 --> 00:41:32,050 Veidā, ka jūs zināt, ka jūs esat hit citu JPEG ir, ja jūs hit citu zvaigzni, 490 00:41:32,050 --> 00:41:39,090 cits sākuma secība baitu. 491 00:41:39,090 --> 00:41:43,330 Tad ko jūs šeit ir jums sarkano JPEG failu turpina, līdz jūs hit zvaigzne, 492 00:41:43,330 --> 00:41:45,150 kas ir norādīta ar jaunu krāsu. 493 00:41:45,150 --> 00:41:48,510 Jūs turpināt un tad jūs hit citu zvaigzni, jūs hit citu JPEG, 494 00:41:48,510 --> 00:41:50,590 Jūs turpināt visu ceļu līdz beigām. 495 00:41:50,590 --> 00:41:53,180 Tu esi pēdējā attēlā šeit, rozā vienu. 496 00:41:53,180 --> 00:41:58,220 Tu iet uz beigām, līdz jūs hit beigām failu raksturs. 497 00:41:58,220 --> 00:42:00,820 Tas būs patiesi noderīga. 498 00:42:00,820 --> 00:42:03,170 >> Daži galvenie takeaways šeit: 499 00:42:03,170 --> 00:42:06,670 Kartes failu nesākas ar JPEG, 500 00:42:06,670 --> 00:42:13,350 bet tad, kad JPEG sākas, visi JPEG tiek glabāti līdzās viens otram. 501 00:42:17,520 --> 00:42:20,420 >> Daži pseudocode par Atgūt. 502 00:42:20,420 --> 00:42:22,570 Pirmkārt, mēs esam gatavojas atvērt mūsu kartes failu, 503 00:42:22,570 --> 00:42:27,500 un kas notiek, lai, izmantojot mūsu failu I / O funkcijas. 504 00:42:27,500 --> 00:42:32,430 Mēs ejam, lai atkārtot šādu procesu, kamēr mēs esam sasnieguši failu. 505 00:42:32,430 --> 00:42:36,450 Mēs ejam, lai izlasītu 512 baiti laikā. 506 00:42:36,450 --> 00:42:39,180 Un ko es teicu šeit ir, mēs esam gatavojas glabāt to buferi, 507 00:42:39,180 --> 00:42:46,230 tāpēc būtībā turēt uz tiem 512 baitiem, kamēr mēs zinām, tieši to, ko darīt ar tiem. 508 00:42:46,230 --> 00:42:50,300 Tad ko mēs vēlamies darīt, ir, mēs vēlamies, lai pārbaudītu, vai mēs esam hit zvaigzni vai ne. 509 00:42:50,300 --> 00:42:57,960 Ja mēs esam hit zvaigzni, ja mēs esam hit viens no starta secību, 510 00:42:57,960 --> 00:42:59,980 tad mēs zinām, ka mēs esam hit jaunu JPEG failu. 511 00:42:59,980 --> 00:43:08,860 Ko mēs vēlamies darīt, ir, mēs esam gatavojas vēlaties, lai izveidotu jaunu failu mūsu pset4 direktorijā 512 00:43:08,860 --> 00:43:14,480 turpināt veikt šo failu. 513 00:43:14,480 --> 00:43:18,220 Bet arī, ja mēs jau esam sasnieguši JPEG pirms, 514 00:43:18,220 --> 00:43:25,620 tad mēs vēlamies, lai izbeigtu šo failu un push to pset4 mapi, 515 00:43:25,620 --> 00:43:29,780 ja mums būs, ka fails glabājas, jo, ja mums nav jānorāda, ka mēs esam beidzās, ka JPEG failu, 516 00:43:29,780 --> 00:43:37,290 tad mēs būtībā ir nenoteikta summa. Ar JPEG nekad nebeigsies. 517 00:43:37,290 --> 00:43:40,840 Tāpēc mēs vēlamies, lai pārliecinātos, ka tad, kad mēs esam lasīt, lai JPEG failā, un rakstot, ka, 518 00:43:40,840 --> 00:43:46,590 Mēs vēlamies īpaši tuvu, ka, lai atvērtu nākamo. 519 00:43:46,590 --> 00:43:48,430 Mēs vēlamies, lai pārbaudītu vairākas lietas. 520 00:43:48,430 --> 00:43:52,880 Mēs vēlamies, lai pārbaudītu, vai mēs esam sākumā jaunu JPEG ar mūsu buferi 521 00:43:52,880 --> 00:43:56,780 un arī tad, ja mēs jau esam atraduši JPEG pirms 522 00:43:56,780 --> 00:44:03,930 jo tas mainīs savu procesu nedaudz. 523 00:44:03,930 --> 00:44:07,880 Tātad, tad kad jūs iet cauri visiem ceļu un jūs hit beigām failu, 524 00:44:07,880 --> 00:44:11,570 tad ko jūs vēlaties darīt, ir, jūs vēlaties aizvērt visus failus, kas pašlaik ir atvērti. 525 00:44:11,570 --> 00:44:14,100 Tas, iespējams, būs pēdējais JPEG fails, ka jums ir, 526 00:44:14,100 --> 00:44:18,930 kā arī kartotēkas, ka jūs esat nodarbojas ar. 527 00:44:21,940 --> 00:44:28,670 >> Pēdējais šķērslis, kas mums ir jārisina, ir, kā faktiski padarīt JPEG failu 528 00:44:28,670 --> 00:44:31,950 un kā patiesībā push to uz mapi. 529 00:44:33,650 --> 00:44:39,850 The PSET nosaka, ka katram JPEG, ka jūs atradīsiet ir šādā formātā, 530 00:44:39,850 --> 00:44:43,990 kur jums ir numurs. jpg. 531 00:44:43,990 --> 00:44:50,750 Numuru, pat ja tas ir 0, mēs to saucam 000.jpg. 532 00:44:50,750 --> 00:44:55,730 Ikreiz, kad jūs atradīsiet JPEG savu programmu, 533 00:44:55,730 --> 00:44:58,040 jūs gatavojas to nosaukt tādā secībā, ka tas ir atrasts. 534 00:44:58,040 --> 00:44:59,700 Ko tas nozīmē? 535 00:44:59,700 --> 00:45:03,530 Mums ir nepieciešams, lai veida izsekot, cik daudz mēs esam noskaidrojuši 536 00:45:03,530 --> 00:45:08,680 un kāda ir katras JPEG skaitam jābūt. 537 00:45:08,680 --> 00:45:13,800 Šeit mēs ejam, lai izmantotu sprintf funkcijas. 538 00:45:13,800 --> 00:45:17,480 Līdzīgs ar printf, kas tikai veida izdrukas vērtība ārā terminālā, 539 00:45:17,480 --> 00:45:23,910 sprintf izdrukā failu ārā mapi. 540 00:45:23,910 --> 00:45:30,870 Un tā, ko tas varētu darīt, ja man bija sprintf, īpašumtiesības, un tad virkne tur, 541 00:45:30,870 --> 00:45:36,660 tas izdrukāt 2.jpg. 542 00:45:36,660 --> 00:45:41,020 Pieņemot, ka es esmu slēgts savu failus pareizi, 543 00:45:41,020 --> 00:45:47,210 kas satur failu, kas man bija izrakstīšanas. 544 00:45:47,210 --> 00:45:50,320 Bet viena lieta ir tā, ka kods, kas man ir šeit 545 00:45:50,320 --> 00:45:53,360 nav gluži atbilst kāda PSET prasa. 546 00:45:53,360 --> 00:46:02,410 The PSET paredz, ka otrā JPEG faila nosaukumam jābūt 002 nevis 2 tikai. 547 00:46:02,410 --> 00:46:09,160 Tātad, ja jūs izdrukāt vārdu, tad varbūt jūs varētu vēlēties mainīt vietturi nedaudz. 548 00:46:09,160 --> 00:46:18,140 >> Vai kāds atceras, kā mēs varētu papildus telpām, kad mēs drukāt kaut ko? 549 00:46:18,140 --> 00:46:22,530 Yeah. >> [Students] Jūs ievietot 3 starp procentu zīmi un 2. >> Jā, perfekta. 550 00:46:22,530 --> 00:46:25,610 Jūs ievietot 3 šajā gadījumā, jo mēs vēlamies telpu 3. 551 00:46:25,610 --> 00:46:32,590 % 3d būtu iespējams, jums 002.jpg nevis 2. 552 00:46:32,590 --> 00:46:40,120 Pirmais arguments vērā sprintf funkciju faktiski char masīvs, 553 00:46:40,120 --> 00:46:42,520 ko mēs agrāk zinājām, kā stīgas. 554 00:46:42,520 --> 00:46:50,700 Tie būs, sava veida vairāk kā pagaidu glabāšanā, tikai glabāt rezultējošo virkni. 555 00:46:50,700 --> 00:46:54,950 Jums nav īsti nodarbojas ar šo, bet jums ir nepieciešams iekļaut to. 556 00:46:54,950 --> 00:47:00,710 >> Zinot, ka katrs faila nosaukums ir numurs, kas aizņem trīs rakstzīmes, 557 00:47:00,710 --> 00:47:06,770 un tad jpg,. cik ilgi būtu tas masīvs būt? 558 00:47:09,070 --> 00:47:14,310 Izsviest numuru. Cik rakstzīmes nosaukumā, nosaukuma? 559 00:47:18,090 --> 00:47:26,320 Tātad tur ir 3 hashtags, periods, jpg. >> [Students] 7. >> 7. Ne gluži. 560 00:47:26,320 --> 00:47:32,000 Mēs esam gatavojas vēlaties 8, jo mēs vēlamies, lai būtu iespējams null terminatoru kā arī. 561 00:47:45,340 --> 00:47:49,730 >> Visbeidzot, tikai izņemt process, kas jums būs darīt, lai atgūtu, 562 00:47:49,730 --> 00:47:55,420 Jums ir kāda sākuma informāciju. 563 00:47:55,420 --> 00:48:02,460 Jūs turpināt, līdz jūs atradīsiet sākums JPEG failā, 564 00:48:02,460 --> 00:48:07,900 un kas var būt vai nu viens no diviem starta secību. 565 00:48:07,900 --> 00:48:12,510 Jūs turēt uz lasījumā. Katru slīpsvītra šeit pārstāv 512 baiti. 566 00:48:12,510 --> 00:48:22,630 Jums vajadzētu turēt uz lasījumā, turēt uz lasījumā, līdz jūs sastopaties citu sākuma secība. 567 00:48:22,630 --> 00:48:29,790 Kad jums ir, ka jūs galu pašreizējo JPEG - šajā gadījumā, tas ir sarkans viens, 568 00:48:29,790 --> 00:48:31,030 lai jūs vēlaties, lai izbeigtu to. 569 00:48:31,030 --> 00:48:35,540 Jūs vēlaties, lai sprintf nosaukumu ka jūsu pset4 mapi, 570 00:48:35,540 --> 00:48:41,580 tad jūs vēlaties, lai atvērtu jaunu JPEG un tad turēt uz lasījumā 571 00:48:41,580 --> 00:48:46,370 līdz jūs sastopaties nākamo. 572 00:48:46,370 --> 00:48:49,040 Turēt uz lasījumā, turēt uz lasījumā, 573 00:48:49,040 --> 00:48:56,290 un tad beidzot, beidzot, jūs gatavojas sasniegt beigām failu, 574 00:48:56,290 --> 00:49:00,360 un lai jūs vēlaties, lai aizvērtu pēdējo JPEG ka tu strādā ar, 575 00:49:00,360 --> 00:49:08,380 sprintf kas savā pset4 mapē, un pēc tam apskatīt visus attēlus, kas tu būsi. 576 00:49:08,380 --> 00:49:12,050 Šie attēli ir faktiski bildes CS50 darbinieki, 577 00:49:12,050 --> 00:49:16,430 un tā tas ir, ja bonuss jautri daļa no PSET nāk 578 00:49:16,430 --> 00:49:26,310 ir tas, ka jums ir konkurējoši jūsu sadaļās, lai atrastu TFS tajās attēlos 579 00:49:26,310 --> 00:49:34,610 un veikt bildes ar viņiem, lai pierādītu, ka jūs esat darījuši PSET 580 00:49:34,610 --> 00:49:37,030 un lai jūs varētu redzēt, kas darbinieki ir bildes. 581 00:49:37,030 --> 00:49:41,510 Tā, tad jums veikt bildes ar darbiniekiem. Dažreiz jums ir pakaļdzīšanās tos. 582 00:49:41,510 --> 00:49:44,680 Iespējams, daži no viņiem mēģinās palaist prom no jums. 583 00:49:44,680 --> 00:49:47,320 Fotografējot ar viņiem. 584 00:49:47,320 --> 00:49:51,190 Tas turpinās. Tas nav saistīts kad PSET ir jāmaksā. 585 00:49:51,190 --> 00:49:53,340 Termiņš tiks paziņots spec. 586 00:49:53,340 --> 00:49:58,060 Tad kopā ar savu sadaļu, izvēloties sadaļā aizņem visvairāk bildes 587 00:49:58,060 --> 00:50:04,430 ar lielāko darbinieku iegūs diezgan laba balvu. 588 00:50:04,430 --> 00:50:08,890 Tas ir sava veida stimuls, lai saņemtu savu pset4 beidza pēc iespējas ātrāk 589 00:50:08,890 --> 00:50:10,820 jo tad jūs varat saņemt uz leju, lai biznesā 590 00:50:10,820 --> 00:50:14,570 nomedīšanas visiem dažāda CS50 darbiniekiem. 591 00:50:14,570 --> 00:50:17,500 Tas nav obligāti, lai gan, tāpēc, kad jums iegūt attēlus, 592 00:50:17,500 --> 00:50:20,310 tad jums ir pabeidzis ar pset4. 593 00:50:20,310 --> 00:50:23,970 >> Un es esmu beidzis ar 4 Walkthrough, tāpēc paldies visiem par ierašanos. 594 00:50:23,970 --> 00:50:29,330 Good luck ar kriminālistikas. [Aplausi] 595 00:50:29,330 --> 00:50:31,000 [CS50.TV]