トップ回答者
バイナリファイルの読込 一定の法則で差が生じる

質問
-
あるシステムが出力するバイナリファイルを読み込んで、処理したいと考えています。
バイナリファイルの中身は
1バイト目 01
2バイト目 02
となっていて、2バイトをあわせて0102というコードになります。
この形式でコードが100個ほどはいっています。
作成したプログラムで読み込んでみた結果と、バイナリエディタ「Stirling.exe」での結果を確認してみると、差があるのですが、その理由がわかりません。
出力しているシステムから確認してみると、どうやらバイナリエディタのほうが正しいようです。
実際の値 :0111,0112,0113,0114,0115読込した値:0117,0118,0119,0120,0121
実際の値 :2105,0000,2106,0000,0000
読込した値:3305,0000,3306,0000,0000
やり方が悪いのか?と考え、ネットにあった情報をもとに2種類、違う処理をしてみましたが、結果は同じでした。
Dim value As Byte() = My.Computer.FileSystem.ReadAllBytes("c:\ファイル名")
For Each val As String In value
Console.WriteLine(val)
Next(別の方法①)<br/> Dim fs As New System.IO.FileStream("C:\ファイル名", System.IO.FileMode.Open, System.IO.FileAccess.Read)
'ファイルを読み込むバイト型配列を作成する
Dim bs(fs.Length - 1) As Byte
'ファイルの内容をすべて読み込む
fs.Read(bs, 0, bs.Length)
fs.Close()(別の方法②) <br/> Dim MyArray(50) As Byte
Dim FileNum As Integer = FileSystem.FreeFile
FileSystem.FileOpen(FileNum, "C:\ファイル名", OpenMode.Binary, OpenAccess.Read, OpenShare.LockWrite)
FileSystem.FileGet(FileNum, MyArray, 1)
FileSystem.FileClose(FileNum)
元の値+(10の桁の値×6)というズレが生じているようです。
1 1+(0*6)=1
11 11+(1*6)=17
21 21+(2*6)=33
31 31+(3*6)=49
41 41+(4*6)=65
51 51+(5*6)=81
61 61+(6*6)=97
71 71+(7*6)=113
81 81+(8*6)=129
91 91+(9*6)=145
バイナリのデータを処理したことがないので、基本的なことがなにかぬけているような気がしないでもないのですが、
どうして、このような結果になるのかがわかりません。
なにかわかることがあれば、教えてください。- 編集済み cis05 2010年2月9日 3:19 コードがぐちゃぐちゃになっていたので修正しました。