1 00:00:00,000 --> 00:00:00,494 2 00:00:00,494 --> 00:00:13,350 >> [Predvaja glasba] 3 00:00:13,350 --> 00:00:14,080 >> ROB Bowden: Hi. 4 00:00:14,080 --> 00:00:17,550 Jaz sem Rob, in upajmo, da Ta rešitev, ki vam dajo 5 00:00:17,550 --> 00:00:19,600 na poti do okrevanja. 6 00:00:19,600 --> 00:00:22,700 Torej, začnimo. 7 00:00:22,700 --> 00:00:25,660 >> Vidimo, da takoj smo samo da bi bili prepričani, da smo 8 00:00:25,660 --> 00:00:27,170 pomočjo zopet pravilno. 9 00:00:27,170 --> 00:00:31,490 Torej bi uporaba le nekaj, kot pika slash opomore. 10 00:00:31,490 --> 00:00:35,500 >> Zdaj bomo odprli pričakovati card dot surovo datoteko. 11 00:00:35,500 --> 00:00:39,740 Vidimo tukaj, da bomo s pomočjo stalna surovo podčrtaj ime datoteke, 12 00:00:39,740 --> 00:00:44,200 ki tu imamo hašiš definiran kot kartica dot surovo. 13 00:00:44,200 --> 00:00:45,030 OK. 14 00:00:45,030 --> 00:00:48,210 >> Zato moramo zagotoviti, da se da uspešno odprta, ker če je 15 00:00:48,210 --> 00:00:51,150 ni, potem moramo opozoriti uporabnika. 16 00:00:51,150 --> 00:00:56,770 Vendar ob predpostavki, da je to storila, mi smo zdaj bo razglasila varovalnega pasu velikosti JPEG 17 00:00:56,770 --> 00:00:58,170 datoteko dolžino imena. 18 00:00:58,170 --> 00:01:02,060 Torej to se bo pufer, ki bomo sprintf v. 19 00:01:02,060 --> 00:01:04,360 >> Torej, kaj je JPEG datoteka ime dolžina? 20 00:01:04,360 --> 00:01:08,490 Tu gor, vidimo, da je hash opredeljena kot osem. 21 00:01:08,490 --> 00:01:10,670 Torej, zakaj osem? 22 00:01:10,670 --> 00:01:15,150 No saj slika bo poimenovana nekaj podobnega nič nič nič. 23 00:01:15,150 --> 00:01:19,460 JPG in potem moramo uporabiti poševnico nični. 24 00:01:19,460 --> 00:01:22,720 Zato moramo varovalo, da lahko shranjevanje osem znakov. 25 00:01:22,720 --> 00:01:25,190 Zdaj bomo imeli števec, ki je gre za sledenje 26 00:01:25,190 --> 00:01:27,780 število JPEG smo našli. 27 00:01:27,780 --> 00:01:31,590 >> In končno, gremo, da imajo JPEG datoteka, ki je sprva null 28 00:01:31,590 --> 00:01:35,920 ki se bo sedaj odprte datoteke, da smo pisno. 29 00:01:35,920 --> 00:01:37,540 Zdaj bomo imeli Dodatna pufer. 30 00:01:37,540 --> 00:01:41,350 To ni isto kot naši sprintf pufer, kjer je ta varovalni ena 31 00:01:41,350 --> 00:01:45,020 da smo berete v podatkih s kartico pika surovo. 32 00:01:45,020 --> 00:01:48,900 >> Torej je pufer bo od nepodpisani znakov, ki jih lahko 33 00:01:48,900 --> 00:01:53,560 v bistvu samo zdravljenje nam bajte, in to je bo v velikosti velikosti bloka 34 00:01:53,560 --> 00:01:57,950 kjer je, kot smo vam povem, Velikost bloka je 512. 35 00:01:57,950 --> 00:02:03,070 Torej, JPEG si lahko privoščite vse kot bloki 512 bajtov. 36 00:02:03,070 --> 00:02:05,890 >> Zdaj gremo v zanko čez celotno datoteko. 37 00:02:05,890 --> 00:02:12,980 Bomo f preberete v našem buffer a single krat bajt velikosti bloka iz 38 00:02:12,980 --> 00:02:14,710 card dot surovo datoteko. 39 00:02:14,710 --> 00:02:16,630 Zdaj kaj f prebral vrne? 40 00:02:16,630 --> 00:02:20,050 Vrne število elementov da je uspešno prebral. 41 00:02:20,050 --> 00:02:27,310 Torej, če ji je uspelo prebrati 512 bajtov, potem želimo, da bi videli, ali je bila ta 42 00:02:27,310 --> 00:02:29,700 JPEG ali pa pisati v datoteko JPEG. 43 00:02:29,700 --> 00:02:34,450 In če to ni vrnil 512 bajtov, potem je bodisi datoteka končala v 44 00:02:34,450 --> 00:02:37,870 tem primeru bomo iztrgajo iz y zanka, ali obstaja neke vrste napake 45 00:02:37,870 --> 00:02:40,300 V tem primeru bomo prekinil tudi izven y zanke, vendar bomo želeli prijaviti 46 00:02:40,300 --> 00:02:41,990 da je šlo nekaj narobe. 47 00:02:41,990 --> 00:02:42,290 >> OK. 48 00:02:42,290 --> 00:02:47,630 Torej, ob predpostavki, da bomo uspešno prebrali v 512 bajtov, želimo, da prvo preverjanje 49 00:02:47,630 --> 00:02:53,070 da bi, da ti zlogi, da smo pravkar prebral na začetek JPEG. 50 00:02:53,070 --> 00:02:56,430 Torej, če je glava JPEG naše buffer. 51 00:02:56,430 --> 00:02:58,460 Zdaj, kaj je v glavi JPEG delaš? 52 00:02:58,460 --> 00:03:00,120 Oglejmo si. 53 00:03:00,120 --> 00:03:05,270 >> Tu gor, vidimo, da je ta funkcija vrnitvijo bika, in da je bik - 54 00:03:05,270 --> 00:03:08,820 tudi tukaj, smo preverjali, če Glava je enaka nič, to konstanto in 55 00:03:08,820 --> 00:03:11,880 Glava ena enaka ta konstanta in Glava dva enaka ta konstanta, 56 00:03:11,880 --> 00:03:15,640 Glava tri enaka tem, ali je ta konstantna kjer so vse te konstante 57 00:03:15,640 --> 00:03:20,340 samo hash opredeljeno tukaj, in so točno to, kar smo vam povedali v spec 58 00:03:20,340 --> 00:03:22,700 da JPEG začne s. 59 00:03:22,700 --> 00:03:27,300 In zato je ta funkcija je le, da bo vrne true, če je to buffer predstavlja 60 00:03:27,300 --> 00:03:31,750 Začetek nove JPEG in false sicer. 61 00:03:31,750 --> 00:03:32,520 >> OK. 62 00:03:32,520 --> 00:03:38,490 Torej, če to ne predstavlja novega JPEG, Nato smo najprej želeli preveriti, da vidim, če 63 00:03:38,490 --> 00:03:42,030 JPEG ni enaka null, V tem primeru smo ga zaprete. 64 00:03:42,030 --> 00:03:44,940 In zakaj torej moramo preveriti da vidim, če je ni nič? 65 00:03:44,940 --> 00:03:48,980 No, da je zelo prvi JPEG smo Ugotovijo, da ne bomo že 66 00:03:48,980 --> 00:03:50,440 odprte datoteke JPEG. 67 00:03:50,440 --> 00:03:55,580 In tako, če bomo poskušali zapreti, potem ne bomo nečesa povsem napačno. 68 00:03:55,580 --> 00:03:59,090 >> Toda vsak poznejši JPEG, ki smo odprli, želimo zapreti 69 00:03:59,090 --> 00:04:00,710 Predhodna slika. 70 00:04:00,710 --> 00:04:04,630 Torej, zdaj bomo uporabili sprintf kot mi rečeno, kjer smo s pomočjo 71 00:04:04,630 --> 00:04:06,280 buffer JPEG ime datoteke. 72 00:04:06,280 --> 00:04:09,870 In bomo uporabili JPEG Naziv Oblika, kot je naš formatu. 73 00:04:09,870 --> 00:04:12,030 In kaj je to? 74 00:04:12,030 --> 00:04:18,450 Tu gor, vidimo, da je nič odstotkov 3D.JPEG kjer zero tri pravkar 75 00:04:18,450 --> 00:04:22,089 Pravi, da bomo uporabili tri cela števila Za to oblazinjeni z ničle. 76 00:04:22,089 --> 00:04:27,470 Torej, to je, kako bomo dobili nič nič one.JPEG in nič 10.JPEG in tako naprej. 77 00:04:27,470 --> 00:04:29,060 >> Bomo uporabili sprintf. 78 00:04:29,060 --> 00:04:33,760 In celo, da smo vstavljanje v niz je otrple JPEG 79 00:04:33,760 --> 00:04:36,380 izterjati, ki je prvotno nič. 80 00:04:36,380 --> 00:04:39,950 Torej prva datoteka odpre se dogaja biti nič nič nič dot JPEG. 81 00:04:39,950 --> 00:04:43,330 In potem smo jo tako, da povečate Naslednja slika nam odpre bo nič nič 82 00:04:43,330 --> 00:04:46,830 ena pika JPEG in jo bomo prirastek še enkrat, tako bo pa nič nič dva pika 83 00:04:46,830 --> 00:04:49,100 JPEG in tako naprej. 84 00:04:49,100 --> 00:04:49,850 >> Vse je v redu. 85 00:04:49,850 --> 00:04:53,210 Torej, zdaj znotraj datoteke JPEG ime, imamo ime 86 00:04:53,210 --> 00:04:54,990 datoteko, da si želimo. 87 00:04:54,990 --> 00:04:58,640 Mi lahko f odpreti to datoteko za pisanje. 88 00:04:58,640 --> 00:04:59,170 OK. 89 00:04:59,170 --> 00:05:02,820 In še enkrat, moramo preveriti, da se Preverite, ali datoteka uspešno 90 00:05:02,820 --> 00:05:08,460 odprt, saj, če ni, potem je bilo nekaj napake. 91 00:05:08,460 --> 00:05:13,100 >> Torej sedaj smo gotten mimo je to JPEG del. 92 00:05:13,100 --> 00:05:16,390 In tukaj vidimo, da gremo pisati v JPEG. 93 00:05:16,390 --> 00:05:20,980 Vendar moramo najprej ta pregled, ki pravi, če JPEG ni enaka null. 94 00:05:20,980 --> 00:05:22,490 Zakaj potrebujemo to? 95 00:05:22,490 --> 00:05:28,020 No, JPEG enaka null, ko smo Trenutno imamo odprto JPEG. 96 00:05:28,020 --> 00:05:31,870 >> Kaj pa, če card dot surove začne s kupom bajtov, ki 97 00:05:31,870 --> 00:05:33,510 ne predstavljajo JPEG? 98 00:05:33,510 --> 00:05:36,240 Potem bomo želeli preskočite tiste bajte. 99 00:05:36,240 --> 00:05:39,600 Če ne bomo imeli ta pregled, nato pa smo Napisala bom, da neodprte 100 00:05:39,600 --> 00:05:45,540 vložijo prvih 512 bajtov kartico, ki ni dobro. 101 00:05:45,540 --> 00:05:46,030 OK. 102 00:05:46,030 --> 00:05:51,330 >> Torej, ob predpostavki, da imamo odprto datoteko, nato bomo pisati v datoteko 103 00:05:51,330 --> 00:05:53,290 512 bajtov, ki jih imamo v našem pufru. 104 00:05:53,290 --> 00:05:57,390 In smo še enkrat preverimo, prepričani, da so 512 bajtov uspešno 105 00:05:57,390 --> 00:06:01,140 so bile napisane zato, ker če ne bi bili Uspešno napisal, potem je nekaj 106 00:06:01,140 --> 00:06:02,080 je šlo narobe. 107 00:06:02,080 --> 00:06:06,540 Bomo zatiskati datotek, tiskanje, ki kaj je šlo narobe, in povratek. 108 00:06:06,540 --> 00:06:10,940 Vse ob predpostavki, da gre pravilno, potem bomo še naprej zanka zapiranje 109 00:06:10,940 --> 00:06:15,060 stara datoteka, odpiranje nove datoteke, pisanje podatkov v novo datoteko, in tako 110 00:06:15,060 --> 00:06:20,990 dokler na koncu, to beri vrne nič, ki pomeni 111 00:06:20,990 --> 00:06:23,280 da je datoteka storiti. 112 00:06:23,280 --> 00:06:28,490 >> Torej sedaj, da je branje kartice več, smo glej, da bomo f zapreti 113 00:06:28,490 --> 00:06:33,250 zadnja slika, ki smo imeli odprte, vendar smo preverjanje, ali datoteka JPEG 114 00:06:33,250 --> 00:06:34,900 ni enaka null. 115 00:06:34,900 --> 00:06:39,520 No f blizu smiselna, saj, kot je smo spisov, da zapiramo 116 00:06:39,520 --> 00:06:43,870 Predhodna slika, ampak zelo zadnja datoteko, ki smo odprli dobi nikoli zaprta. 117 00:06:43,870 --> 00:06:45,580 Tako da je tisto, kar to počne. 118 00:06:45,580 --> 00:06:47,720 >> Ampak zakaj moramo preveriti null? 119 00:06:47,720 --> 00:06:53,130 Pa kaj, če kartica pika surov ni ima eno samo JPEG znotraj njega? 120 00:06:53,130 --> 00:06:56,640 V tem primeru bi imeli nikoli odprl datoteko. 121 00:06:56,640 --> 00:07:00,230 In če ne bomo nikoli odpreti datoteko, bi morali Ne poskušajte zapreti tisto datoteko. 122 00:07:00,230 --> 00:07:03,000 Torej, to je tisto, kar ta pregled počne. 123 00:07:03,000 --> 00:07:07,880 >> Zdaj tu, kot sem že dejal, smo lahko so izbruhnili, da y zanke bodisi če 124 00:07:07,880 --> 00:07:13,520 Kartica je končala ali če obstajajo nekatere napake pri branju iz kartice. 125 00:07:13,520 --> 00:07:16,680 Torej se to preverjanje, da vidim, če je bilo napaka pri branju iz kartice, 126 00:07:16,680 --> 00:07:19,400 tem primeru, bomo pa rekli, je bila napaka pri branju. 127 00:07:19,400 --> 00:07:22,130 Nočemo, da bi uporabniku, da razmišljajo vse, kar je uspešno šel. 128 00:07:22,130 --> 00:07:24,750 In bomo vrnili enega za napake. 129 00:07:24,750 --> 00:07:29,580 >> Končno bomo f zapreti naše surovo datoteko naša kartica dot surovo, kar pomeni, da 130 00:07:29,580 --> 00:07:34,070 Vse je šlo dobro in povratek nič in to je to. 131 00:07:34,070 --> 00:07:36,130 >> Moje ime je Rob in to je bilo zopet. 132 00:07:36,130 --> 00:07:42,102 >> [Predvaja glasba]