C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

■86241 / 1階層)  バイナリデータを読んで、日付などの形にする方法について
□投稿者/ Azulean (914回)-(2018/01/03(Wed) 00:44:46)
No86240 (へなちょこ さん) に返信
> このような処理として、以下の事がしたい場合は、どのように書けばよいのか、教えて
> 頂けないでしょうか?

どういった状況・目的で取り組んでいるのかわかりませんが、C 言語のデータ構造の読み方を独学でやりきるのは難しいでしょうし、質問が続いてしまうので、近場に頼れる人がいるならその人に教えてもらった方が良いと思いますよ。


> 色々と試してみたところ、「型が変換できません」のエラーが出てしまい、訳が分からなく
> なってます....

プログラミングは適当に試してもうまくいきません。
このコードでなぜそれができるのか? どういった仕組みなのか? を考察することも必要ですし、時にはいろいろと調べまくってキーワードをなんとか見つけるということも必要かと思います。
(VB.NET だけでうまく見つからないなら、C# 側のキーワードでも探してみて、どういったメソッドが使えそうか、探ってみるとかも必要かもしれませんが…)


> ・2バイト分のバイナリデータを読んで、Integer型にする。(10進数の値にしたいと思ってます。)

我々が数学などで扱う、普通の 10 進数では、1 桁で 0 〜 9 の 10 通りの表現ができ、1234 という数値は 1 * 1000 + 2 * 100 + 3 * 10 + 4 という数式で表現できます。

コンピューターの世界では 1 バイトが 8 ビットで構成されているので、256 パターンの数値表現となります。
256 になると、1つ上の桁=上位バイトに繰り上がり、[01] [00] となるわけです。

また、Intel 系 CPU ではリトルエンディアンが主流なので、下位バイトから順番に書き込む・読み込むことが一般的です。
よって、2 バイトで表現される数値は、以下のような計算で求まります。

Dim result As Integer = CInt(1 バイト目) + CInt(2 バイト目) * 256


> ・8バイト分のバイナリデータを読んで、日付の形にする。(「FILETIME 構造体」という
> 形のデータだと思います。)

こっちの話は「知っているか否か」が鍵になりますね。
FILETIME 構造体は以下のように 4 バイトの型が 2 つ並んだ構造体です。
https://msdn.microsoft.com/ja-jp/library/windows/desktop/ms724284

特にアラインメントなどもなく、8 バイトの連続したデータであることが正しいのであれば、BinaryReader.ReadInt64 で Long 型として読み込み、DateTime.FromFileTime メソッドで DateTime 型に変換すれば楽でしょうね。
編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←バイナリデータを読んで、日付などの形にする方法について /へなちょこ →Re[2]: バイナリデータを読んで、日付などの形にする方法につ.. /へなちょこ
 
上記関連ツリー

バイナリデータを読んで、日付などの形にする方法について / へなちょこ (18/01/03(Wed) 00:23) #86240
バイナリデータを読んで、日付などの形にする方法について / Azulean (18/01/03(Wed) 00:44) #86241 ←Now
│└ Re[2]: バイナリデータを読んで、日付などの形にする方法につ.. / へなちょこ (18/01/03(Wed) 14:06) #86242
│  └ Re[3]: バイナリデータを読んで、日付などの形にする方法につ.. / Azulean (18/01/03(Wed) 14:37) #86243
│    └ Re[4]: バイナリデータを読んで、日付などの形にする方法につ.. / へなちょこ (18/01/03(Wed) 17:39) #86245
│      ├ Re[5]: バイナリデータを読んで、日付などの形にする方法につ.. / Azulean (18/01/03(Wed) 19:36) #86247
│      │└ Re[6]: バイナリデータを読んで、日付などの形にする方法につ.. / へなちょこ (18/01/03(Wed) 23:51) #86248
│      └ Re[5]: バイナリデータを読んで、日付などの形にする方法につ.. / 魔界の仮面弁士 (18/01/05(Fri) 16:27) #86252 解決済み
│        └ Re[6]: バイナリデータを読んで、日付などの形にする方法につ.. / へなちょこ (18/01/09(Tue) 21:19) #86264
Re[1]: バイナリデータを読んで、日付などの形にする方法につ.. / Jitta (18/01/03(Wed) 17:36) #86244
  └ Re[2]: バイナリデータを読んで、日付などの形にする方法につ.. / ?????? (18/01/03(Wed) 23:52) #86249 解決済み

上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信