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

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

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

Single配列の読み書きに関して

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■83380 / inTopicNo.1)  Single配列の読み書きに関して
  
□投稿者/ ジングルベル (1回)-(2017/03/20(Mon) 10:17:08)

分類:[.NET 全般] 

以下のコードでSingle配列をバイナリファイルに書き込みを行いました。

Sub OUT()

Dim a(Num) As Single

  Using stream As Stream = New FileStream(Path, FileMode.Create) 
  Using writer As New BinaryWriter(stream)

        For j As Integer = 1 To Num

             writer.Write(a(j))

        Next j

    End Using
    End Using

End Sub


その後、以下のコードで読み込みを行ったところ、元のデータと一致するデータを取得することができました。


Sub IN1()

Dim a(Num) As Single

      Using stream As Stream = File.OpenRead(Path)
      Using reader As New BinaryReader(stream)


    For i = 1 To Num

        a(i) = reader.ReadSingle()

    Next i


      End Using
      End Using


End Sub




一方で、以下のコードのように、一度バイト配列に読み込んでから
読み込もうとするとなぜか元のデータと一致しません。
何が問題でしょうか?


Sub IN2()

Dim a(Num) As Single

        Dim fs0 As New FileStream(Path, FileMode.Open, FileAccess.Read)
        Dim bs(CInt(fs0.Length - 1)) As Byte
        fs0.Read(bs, 0, fs0.Length)
        fs0.Close()


    For i = 0 To Num - 1

        a(i + 1) = BitConverter.ToSingle(bs, i * 4)

    Next i



End Sub


引用返信 編集キー/
■83381 / inTopicNo.2)  Re[1]: Single配列の読み書きに関して
□投稿者/ shu (981回)-(2017/03/20(Mon) 10:50:06)
No83380 (ジングルベル さん) に返信

> 一方で、以下のコードのように、一度バイト配列に読み込んでから
> 読み込もうとするとなぜか元のデータと一致しません。
> 何が問題でしょうか?
>
当該バイト配列に格納されている内容はBitCOnverterで読み込める形式ではな
いあからです。当該バイト配列よりMemoryStreamを作成してそのストリームを
BinaryReaderで読み込む必要があります。
引用返信 編集キー/
■83382 / inTopicNo.3)  Re[2]: Single配列の読み書きに関して
□投稿者/ ジングルベル (3回)-(2017/03/20(Mon) 11:03:48)
> 当該バイト配列に格納されている内容はBitCOnverterで読み込める形式ではな
> いあからです。

同じバイト配列なのに読み込める形式ではないのはなぜでしょうか?
もう少し詳しい解説をよろしくお願いいたします。
 
引用返信 編集キー/
■83383 / inTopicNo.4)  Re[1]: Single配列の読み書きに関して
□投稿者/ Azulean (800回)-(2017/03/20(Mon) 11:09:02)
2017/03/20(Mon) 11:14:52 編集(投稿者)

No83380 (ジングルベル さん) に返信
> 一方で、以下のコードのように、一度バイト配列に読み込んでから
> 読み込もうとするとなぜか元のデータと一致しません。
> 何が問題でしょうか?

コードをコピペして手元で実行しましたが、特に差はできませんね。
同じ Path を読み込んでいるのでしょうか?
また、IN1 と IN2 の実行時の Path のファイルはまったく同じ内容であることを確認できていますか?(他の実験をしていてファイルの内容が変わっていたとかないですか?)

あとは、開発環境や実行環境、.NET のバージョンあたりも触れてもらった方が良いかもしれません。

-----
ところで、配列 a の0 番目の要素は無視でよいのでしょうか。
OUT も IN1/2 も無視しているようですが。
引用返信 編集キー/
■83385 / inTopicNo.5)  Re[2]: Single配列の読み書きに関して
□投稿者/ ジングルベル (4回)-(2017/03/20(Mon) 12:51:30)
解決しました
どうもありがとうございました。
 
解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ