- - PR -
バイナリデータの読み込み
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-05-18 19:04
バイナリデータの読み込み方法について2つ質問があります。
質問@例えば、4バイトの整数型のバイナリデータを読み込む方法です。 バイト単位で読んで、数値を計算する方法でやってみました。(以下....) Dim SR As Stream = File.Open("...", FileMode.Open, FileAccess.Read) Dim BR As New BinaryReader(SR) Dim A(3) As Byte Dim Num As Integer A=BR.ReadBytes(4) Num=CInt(CInt(A(0)) * 256 ^ 3 + CInt(A(1)) * 256 ^ 2 + _ CInt(A(2)) * 256 + CInt(A(3))) これだと、何かスマートじゃ無い気がするのですが、他の方法はありますか? ReadInt32メソッドを試してみましたが、結果が正しくありませんでした。 質問ABCDコードで表現されたバイナリデータを数値に変換する方法はありますか? | ||||||||
|
投稿日時: 2005-05-18 19:15
BitConverter.ToInt32() は使えませんか?
二進化十進数は良くわかりません。ごめんなさい。 _________________ 諸農和岳 Powered by Turbo Delphi & Microsoft Visual Studio 2005 十兵衛@わんくま同盟 http://blogs.wankuma.com/jubei/ | ||||||||
|
投稿日時: 2005-05-18 19:27
先ず、HexDump のプログラムから書き始めてみるとか... _________________ IEEE-CSDP 2004-2007 | ||||||||
|
投稿日時: 2005-05-18 19:32
ビッグエンディアンで解釈する必要があるようですから、BitConverterも同じことですね。 Windows上で動かす.NETでは、ビッグエンディアンは普通使われません。 ビッグエンディアンを扱うのなら、あびさん自身がお書きになったようなコードが必要でしょう。 二進化十進を単純に変換するようなライブラリも標準では付いていませんね。 VB.NETではビットシフトがないので多少非直感的ですが(VB2005で増えるんだっけ)、 ビット演算でマスクしてやれば求めるのはそう難しくはないでしょう。 | ||||||||
|
投稿日時: 2005-05-19 09:09
IPAddress.NetworkToHostOrder()を使うとか。 _________________ 諸農和岳 Powered by Turbo Delphi & Microsoft Visual Studio 2005 十兵衛@わんくま同盟 http://blogs.wankuma.com/jubei/ | ||||||||
|
投稿日時: 2005-05-19 11:16
@バイト単位のデータは何とかできそうです。
ありがとうございました。 Aについては、どうでしょう? 具体的には、例えば、1バイト8ビットの中身が、3,2,1,1ビットの4つのデータ(2進数表示)になっている場合です。 ビット演算(マスキング)をどう使うのか、全くイメージが湧かないのですが。。。。 もう少し、ヒントを頂けないでしょうか? | ||||||||
|
投稿日時: 2005-05-19 11:21
もし、あびさんの身近にCプログラマがいたら、その人に聞くのが一番手っ取り早いと思います。で、Cでソース組んでアルゴリズムを把握して、それをVB.NETのコードに置き換える。 | ||||||||
|
投稿日時: 2005-05-19 12:03
BitArrayクラスを使うと簡単にできそうなので、やってみます。
|