1 00:00:00,000 --> 00:00:00,494 2 00:00:00,494 --> 00:00:13,350 >> [音楽再生] 3 00:00:13,350 --> 00:00:14,080 >> ROBボーデン:こんにちは。 4 00:00:14,080 --> 00:00:17,550 私はロブだし、のはそれを期待しましょう このソリューションは、あなたを置くことができます 5 00:00:17,550 --> 00:00:19,600 回復への道。 6 00:00:19,600 --> 00:00:22,700 それではを始めましょう。 7 00:00:22,700 --> 00:00:25,660 >> 我々はすぐに私たちがしていることがわかります ちょうど私達がしていることを確認します 8 00:00:25,660 --> 00:00:27,170 正しくリカバリ]を使用。 9 00:00:27,170 --> 00:00:31,490 だから、使い方はちょうど何かであるべき ドットスラッシュのように回復します。 10 00:00:31,490 --> 00:00:35,500 >> 今、私たちは期待を開くしようとしている カードは、RAWファイルに点在しています。 11 00:00:35,500 --> 00:00:39,740 私達は私達が使用していることがわかり 一定の生のアンダースコアファイル名、 12 00:00:39,740 --> 00:00:44,200 これまでここでは、ハッシュを持っている カードは未加工のドットとして定義されています。 13 00:00:44,200 --> 00:00:45,030 [OK]をクリックします。 14 00:00:45,030 --> 00:00:48,210 >> だから我々は確認していることを確認する必要があり オープンに成功のためならば 15 00:00:48,210 --> 00:00:51,150 、その後、我々はユーザーに警告する必要がありませんでした。 16 00:00:51,150 --> 00:00:56,770 しかし、それがなかったと仮定して、我々は今だ サイズのJPEGのバッファを宣言するだろう 17 00:00:56,770 --> 00:00:58,170 ファイル名の長さ。 18 00:00:58,170 --> 00:01:02,060 だから、これはバッファされようとしていること 私たちはにはsprintfするつもりだ。 19 00:01:02,060 --> 00:01:04,360 >> だから、JPEGファイル名の長さは何ですか? 20 00:01:04,360 --> 00:01:08,490 ここに、我々はそれがだと見ること 8のように定義されたハッシュ。 21 00:01:08,490 --> 00:01:10,670 では、なぜ8? 22 00:01:10,670 --> 00:01:15,150 さて、与えられたファイルは、名前が付けられます ゼロゼロゼロのようなもの。 23 00:01:15,150 --> 00:01:19,460 JPG、その後、我々は、バックスラッシュゼロを必要としています。 24 00:01:19,460 --> 00:01:22,720 だから我々は可能なバッファを必要とする 8文字を格納。 25 00:01:22,720 --> 00:01:25,190 今、私たちはだカウンターを持っているつもりです を追跡しようとして 26 00:01:25,190 --> 00:01:27,780 数字JPEGファイル、我々が見つかりました。 27 00:01:27,780 --> 00:01:31,590 >> そして最後に、我々は持っているつもりです nullに初期化されたJPEGファイル 28 00:01:31,590 --> 00:01:35,920 現在であることを行っている 我々が書いている開いているファイル。 29 00:01:35,920 --> 00:01:37,540 今、私たちは持っているつもりです 追加のバッファ。 30 00:01:37,540 --> 00:01:41,350 これが私たちのsprintfと同じではありません このバッファは1であるバッファ 31 00:01:41,350 --> 00:01:45,020 私たちは、データに読んでいることを カードからの生点在しています。 32 00:01:45,020 --> 00:01:48,900 >> だから、バッファがあることになるだろう 符号なしの文字、そのことができます 33 00:01:48,900 --> 00:01:53,560 基本的にはちょうど私達にバイトを扱い、それがだ サイズブロ​​ックサイズであることを行って 34 00:01:53,560 --> 00:01:57,950 ここで、私たちはあなたを伝えるように、 ブロックサイズは512である。 35 00:01:57,950 --> 00:02:03,070 だから、JPEGファイルは、あなたはすべてを扱うことができます 512バイトのブロックとして。 36 00:02:03,070 --> 00:02:05,890 >> 今、私たちはループするつもりだ ファイル全体にわたる。 37 00:02:05,890 --> 00:02:12,980 私たちは、バッファに読み込むFになるだろう 単一バイトのブロックサイズの倍 38 00:02:12,980 --> 00:02:14,710 カードは、RAWファイルに点在しています。 39 00:02:14,710 --> 00:02:16,630 今Fが戻って何を読んでいますか? 40 00:02:16,630 --> 00:02:20,050 これは、項目の数を返します。 それが正常に読み込まれていること。 41 00:02:20,050 --> 00:02:27,310 それは、次に、512バイトを読み取ることに成功しそうである場合 我々は、これがあったかどうかを見てみたい 42 00:02:27,310 --> 00:02:29,700 JPEGまたはそれは、JPEGファイルに書き込む。 43 00:02:29,700 --> 00:02:34,450 そして、それは512バイトを返さなかった場合には、 そのファイルのいずれかで終了した 44 00:02:34,450 --> 00:02:37,870 その場合、我々はYから抜け出すだろう ループ、またはエラーのいくつかの並べ替えがあります 45 00:02:37,870 --> 00:02:40,300 その場合、我々はまた、から抜け出すだろう Yループが、我々は報告したいと思う 46 00:02:40,300 --> 00:02:41,990 その何かが間違っていた。 47 00:02:41,990 --> 00:02:42,290 >> [OK]をクリックします。 48 00:02:42,290 --> 00:02:47,630 だから我々は正常に読み込まれていることを想定し 512バイトでは、まずチェックしたい 49 00:02:47,630 --> 00:02:53,070 そのこれらのバイトは、その我作る ただ、JPEGを開始読み込む。 50 00:02:53,070 --> 00:02:56,430 私たちのバッファのJPEGヘッダであるかのようにします。 51 00:02:56,430 --> 00:02:58,460 今では、JPEGヘッダに何をやっている? 52 00:02:58,460 --> 00:03:00,120 それでは見てみましょう。 53 00:03:00,120 --> 00:03:05,270 >> ここに、我々は、この機能があることがわかり 牛を返すと、その雄牛 - 54 00:03:05,270 --> 00:03:08,820 ここにも、私達はかどうかを確認している ヘッダーゼロこの定数に等しく、 55 00:03:08,820 --> 00:03:11,880 ヘッダー1は、この定数に等しく、 ヘッダー2は、この定数に等しい 56 00:03:11,880 --> 00:03:15,640 ヘッダ3はこれか、これを等しく これらすべての定数であり、定 57 00:03:15,640 --> 00:03:20,340 ちょうどここで定義されたハッシュしている まさに我々がspecであなたに言った 58 00:03:20,340 --> 00:03:22,700 JPEGが始まること。 59 00:03:22,700 --> 00:03:27,300 ので、この機能は単にしようとしている このバッファが表す場合はtrueを返す 60 00:03:27,300 --> 00:03:31,750 新しいJPEGの開始 そうでない場合はfalse。 61 00:03:31,750 --> 00:03:32,520 >> [OK]をクリックします。 62 00:03:32,520 --> 00:03:38,490 これが新しいJPEGを表現している場合は、 その後、我々は最初のかどうかを確認したい 63 00:03:38,490 --> 00:03:42,030 JPEGファイルは、ヌルに等しくない その場合、我々はそれを閉じます。 64 00:03:42,030 --> 00:03:44,940 そして、なぜ、我々は確認する必要があります それがnullでないかどうかを確認するには? 65 00:03:44,940 --> 00:03:48,980 まあ我々は非常に最初のJPEG 我々はすでに持っていることはありません 66 00:03:48,980 --> 00:03:50,440 オープンJPEGファイル。 67 00:03:50,440 --> 00:03:55,580 だから、我々はそれをクローズしようとすると、 我々はかなり右に何かをやっていない。 68 00:03:55,580 --> 00:03:59,090 >> しかし、すべてのその後のJPEGこと 我々は開いて、我々は閉じるようにします 69 00:03:59,090 --> 00:04:00,710 前のファイル。 70 00:04:00,710 --> 00:04:04,630 だから今我々は、我々としてはsprintfを使用するつもりだ 我々は使用している場合、前に言った 71 00:04:04,630 --> 00:04:06,280 JPEGファイル名をバッファ。 72 00:04:06,280 --> 00:04:09,870 そして、我々はJPEGファイルを使用するつもりだ 私たちの形式としてフォーマットに名前を付けます。 73 00:04:09,870 --> 00:04:12,030 そして、それは何ですか? 74 00:04:12,030 --> 00:04:18,450 ここに、我々はそれがパーセントゼロであることを参照してください。 3D.JPEGちょうどゼロ3 75 00:04:18,450 --> 00:04:22,089 我々は3の整数を使用しますと言っている このため、ゼロでパディング。 76 00:04:22,089 --> 00:04:27,470 だから、これは我々がゼロにゼロを買ってあげる方法です one.JPEGなどゼロ見られた回数や。 77 00:04:27,470 --> 00:04:29,060 >> 私たちは、sprintfのを使用するつもりだ。 78 00:04:29,060 --> 00:04:33,760 そして、我々は挿入している整数 文字列にしびれJPEGファイルである 79 00:04:33,760 --> 00:04:36,380 もともとゼロである、回復した。 80 00:04:36,380 --> 00:04:39,950 だから、オープンした最初のファイルが起こっている ゼロゼロゼロドットのJPEGであると。 81 00:04:39,950 --> 00:04:43,330 ようにして、我々はそれをインクリメントしている 我々は次に開いたファイルはゼロでゼロになります 82 00:04:43,330 --> 00:04:46,830 1ドットのJPEG、我々はそれをインクリメントします 再びので、ゼロ、ゼロ2点になるでしょう 83 00:04:46,830 --> 00:04:49,100 というように、JPEGや。 84 00:04:49,100 --> 00:04:49,850 >> わかりました。 85 00:04:49,850 --> 00:04:53,210 だから今JPEGファイルの内部 名前、我々の名前を持っている 86 00:04:53,210 --> 00:04:54,990 私たちが望むファイル。 87 00:04:54,990 --> 00:04:58,640 我々は、F書き込み用にそのファイルを開くことができます。 88 00:04:58,640 --> 00:04:59,170 [OK]をクリックします。 89 00:04:59,170 --> 00:05:02,820 再び、我々は作るためにチェックする必要があります 成功したファイルことを確認してください 90 00:05:02,820 --> 00:05:08,460 そして、それがなかった場合から開か いくつかのエラーが発生しました。 91 00:05:08,460 --> 00:05:13,100 >> だから今我々は、過去得ている これは、JPEG部である。 92 00:05:13,100 --> 00:05:16,390 そしてここで、我々は我々が行っている参照してください。 JPEGに書き込む。 93 00:05:16,390 --> 00:05:20,980 しかし、我々は最初に述べています、このチェックを持っている JPEGファイルが等しくないNULLがない場合。 94 00:05:20,980 --> 00:05:22,490 なぜそれが必要なのでしょうか? 95 00:05:22,490 --> 00:05:28,020 ときに我々だけでなく、JPEGファイルはNULLに等しい 現在開いて、JPEGを持っています。 96 00:05:28,020 --> 00:05:31,870 >> どのようなカードドット生に起動した場合 そのバイトの束と 97 00:05:31,870 --> 00:05:33,510 JPEGを表すものではありません? 98 00:05:33,510 --> 00:05:36,240 その後、我々はするつもりだ それらのバイトをスキップ。 99 00:05:36,240 --> 00:05:39,600 我々は、このチェックを持っていない場合、我々はしている 未開封に書くつもり 100 00:05:39,600 --> 00:05:45,540 最初の512バイトを提出 良くないカード。 101 00:05:45,540 --> 00:05:46,030 [OK]をクリックします。 102 00:05:46,030 --> 00:05:51,330 >> それでは、我々はファイルを開いていると仮定して 我々はそのファイルへの書き込みをしようとしている 103 00:05:51,330 --> 00:05:53,290 我々は我々のバッファを持っている512バイト。 104 00:05:53,290 --> 00:05:57,390 そして、我々は再び作るためにチェックしている 首尾よく512バイトことを確認してください 105 00:05:57,390 --> 00:06:01,140 彼らがいなかった場合、以下の原因書かれていた 正常に書き込まれ、その後何か 106 00:06:01,140 --> 00:06:02,080 間違っていた。 107 00:06:02,080 --> 00:06:06,540 我々は、我々のファイルを閉じる印刷します 何かが間違っていた、と返す。 108 00:06:06,540 --> 00:06:10,940 すべてがその後、正常に行くと仮定して 我々はクローズループしておこう 109 00:06:10,940 --> 00:06:15,060 古いファイル、新しいファイルを開く、書き込み ので、新しいファイルにデータ、および 110 00:06:15,060 --> 00:06:20,990 最後に、このFが読むまでに ゼロを返す手段 111 00:06:20,990 --> 00:06:23,280 ファイルが実行されていること。 112 00:06:23,280 --> 00:06:28,490 >> だから今カードの読み取りが終わったので、 我々は、Fクローズしようとしていることがわかります 113 00:06:28,490 --> 00:06:33,250 我々は開いていたが、最後のファイル 我々はチェックしている場合は、JPEGファイル 114 00:06:33,250 --> 00:06:34,900 NULLと等しくない。 115 00:06:34,900 --> 00:06:39,520 さて、Fの近くには、理由として理にかなっている 我々はクローズしている、ファイルをオープンする 116 00:06:39,520 --> 00:06:43,870 前のファイルが、非常に最後の 我々は開いたファイルを閉じれることは決してありません。 117 00:06:43,870 --> 00:06:45,580 だから、これが何をしているかだ。 118 00:06:45,580 --> 00:06:47,720 >> しかし、なぜ我々はnullをチェックする必要がありますか? 119 00:06:47,720 --> 00:06:53,130 さてどのような場合は、カードのドット生はしませんでした その中の一つのJPEGがありますか? 120 00:06:53,130 --> 00:06:56,640 その場合、我々はならない ファイルを開いたことはありません。 121 00:06:56,640 --> 00:07:00,230 我々は、ファイルを開いたことがない場合、我々はすべき そのファイルをクローズしようとしない。 122 00:07:00,230 --> 00:07:03,000 だから、このチェックが何をしているかだ。 123 00:07:03,000 --> 00:07:07,880 >> 私が前に言ったように今ここに、我々は可能性 そのYループのどちらかのを壊れている 124 00:07:07,880 --> 00:07:13,520 カードが存在する場合、エンドまたはしました カードからの読み込み多少の誤差はご了承ください。 125 00:07:13,520 --> 00:07:16,680 だから、これがあったかどうかを確認してい で、カードからの読み込みエラー 126 00:07:16,680 --> 00:07:19,400 その場合、私たちはそこに言うよ エラー読んでいた。 127 00:07:19,400 --> 00:07:22,130 我々は、ユーザーが考えたくない すべてが成功しました。 128 00:07:22,130 --> 00:07:24,750 そして、我々は、エラーのために1を返します。 129 00:07:24,750 --> 00:07:29,580 >> 最後に、我々は、F私たちの生のファイルを閉じます、 私たちのカードは、それを示すために、生のドット 130 00:07:29,580 --> 00:07:34,070 すべてがうまくいったとリターン ゼロ、それはそれだ。 131 00:07:34,070 --> 00:07:36,130 >> 私の名前はロブであり、これは回復した。 132 00:07:36,130 --> 00:07:42,102 >> [音楽再生]