質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

3回答

826閲覧

FATファイルシステムについての調査

Amateur0845

総合スコア6

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2021/06/28 03:35

編集2021/06/28 04:38

前提・実現したいこと

大学の授業でFATファイルシステムの調査を行っています
その中でFAT区画のサイズを調べる課題がでたのですが分かりませんでした

教授に分からない旨、メールしたのですが返信がありません。
課題の提出期日に迫っており調べても理想とされる回答が得られません。

エンディアンに関して以下のように考えています

FAT区画のサイズについて
37 02 00 00
16進数でエンディアンを考慮した場合
00 00 02 37
10進数のバイト表記で 567バイト
16進数のバイト表記で 0x237バイト

この様な考え方であっているのでしょうか
オンラインで友人もおらず教授からの返信もまちまちなのでどうしようもありません
皆さまは専門分野を学ぶ際に、どのように資料などを得ていますでしょうか?

発生している問題・エラーメッセージ

$ od -Ax -tx1 -N0x30 diskimage.dat 000000 eb 58 90 6d 6b 66 73 2e 66 61 74 00 02 01 20 00 000010 02 00 00 00 00 f8 00 00 20 00 40 00 00 00 00 00 000020 00 20 01 00 37 02 00 00 00 00 00 00 02 00 00 00 000030

試したこと

オフセット0x24から4バイトがサイズであると思うのですがエンディアンを考慮したりすると分かりません
37 02 00 00 00 00 00 00 00
が対象であると思うのですがどのように求めるのでしょうか

補足情報(FW/ツールのバージョンなど)

専門に学んでいませんのでお手柔らかにお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

neconekocat

2021/06/28 03:41

エンディアンについて知りたいならググってください。その方が早いですよ。
gentaro

2021/06/28 03:53

「大学の授業」でやってることなら先生に聞けばいいだけ。何のために授業料払ってるのか…。 ここは https://teratail.com/help/avoid-asking 「何かを作りたいのでコードを書いてほしい、学校の課題を解いてほしい等の質問は、具体的にプログラミングで困っている質問ではないと考え、推奨していません。」 とガイドラインに書いてある通り課題を手伝ってもらうサイトじゃないし、できないなら授業で習ったことを復習するのが先決じゃない?
K_3578

2021/06/28 04:47

分からなかったら分からないで良いんじゃないの。課題って本人の理解がどこまで出来てるかを確認するために出してるはずだから、下手にネットで聞いてそれが合ってても、意味を理解してなかったら 教授にはそれが理解出来ている前提で話されると思うけど。 それと、最近はネットとかで課題聞いたりして解決するのを防ぐ為に学校側でこういう所見たりしてるらしいですよ。バレる前に質問の削除リクエストした方が良いのでは。 (質問文を編集で削除した場合は通報して質問文復元するので、削除するならちゃんと理由書いて 削除リクエストしてください。)
退会済みユーザー

退会済みユーザー

2021/06/29 00:25 編集

過去の質問もいくつか課題を聞いてるけど、本当にやめたほうがいいですよ。 K_3578さんも言っているとおり、課題の主な目的は理解の確認や、自分で調べたり考えたりする過程で理解を深める事にあります。別に正解を提出して貰いたい訳じゃありません。自分で調べて考えた結果を提出し、違ってたら教授が指摘するでしょうから、その時に聞けばいいんです。 ここで答えだけ聞いて理解せずに授業の内容だけどんどん先に進んで、この先ついていけるんですか?せっかく学生として学べる時間を無駄に浪費するような行為はやめたほうがいいと思います。
guest

回答3

0

オンラインで友人もおらず教授からの返信もまちまち

自分で調べればいいんじゃないですか?

FATの解説本とかは20年前には持ってたけどどっかいっちゃったので調べるのが面倒なのですが、
FATそのものはCPU依存はない(まぁ、8086前提で作られたわけだけど、68Kマシンで変わるとかいう性質ではない)ので、フォーマットとしてエンディアンなども決まっているはずです。
こんな話をするくらいだから規格書に類するものが手元にあるわけでしょう? ちゃんと読めば書いてあるはずなので、ちゃんと読んでください。

とりあえず'FATフォーマット ディレクトリエントリ'でググって引っかかったサイトにそれっぽいものがありますが(ディレクトリエントリは構造についての記述を拾う/一般的なFATの解説を排除するためのそれっぽい用語)、それを信用するなら

FATファイルシステム上の全てのデータ構造は、“リトルエンディアン”である。

だそうです。でも、これ、FAT32載ってないな...'FATフォーマット BPB'で拾ったこことか、まぁ書いてあることは同じですね。

ということで、

16進数でエンディアンを考慮した場合

00 00 02 37
10進数のバイト表記で 567バイト
16進数のバイト表記で 0x237バイト

ということでいいんじゃないでしょうか。

投稿2021/06/28 12:33

thkana

総合スコア7703

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

FAT の規格の一部(VFAT を除いたもの。exFATはFATと付いているが従来のとは互換性がないのでこれも除かれる)は標準工業規格になっており、日本では JIS X 0605 として規定されています。
大学であれば JIS 規格書は図書館にあるはずです(なくてもネット経由で見ることができるはず)。

まずはそれを読んでみるというのも一つの手です。
※ただしなんでこんなに分かりにくく書いてるんだ、と思う程度には難解です。

投稿2021/06/28 23:32

tacsheaven

総合スコア13703

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

BPB_BytsPerSec(Ofset:11, Len:2)=00 02 = 0x200 = 512 byte
BPB_TotSec16(Ofset:19, Len:2) = 00 00 = 無効
BPB_TotSec32(Offset:32, Len:4) = 00 20 01 00 = 0x12000 = 73728 sector
なので、ヴォリュームの容量は、約36MB、ってところなんじゃないの。

それとも、FATでフォーマットされたディスクのなかでFAT(管理領域)が占める容量がほしいのなかな?BPB_FATSz16/32 * BPB_NumFATs * BPB_BytsPerSec ? FATを操作する関数を作ることのためにFATの容量が欲しいとかであれば、 BPB_NumFATsは掛けないほうがいいかもしれないね。

Cのタグ付けてるなら、「FATを構造体で表して、各要素をprintするプログラム」でも書けばずいぶん理解もはやまるかもね。

投稿2021/06/28 22:33

matukeso

総合スコア1681

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問