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

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

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.83380 の関連記事表示

<< 0 >>
■83380  Single配列の読み書きに関して
□投稿者/ ジングルベル -(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

親記事 /過去ログ142より / 関連記事表示
削除チェック/

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

    > 一方で、以下のコードのように、一度バイト配列に読み込んでから
    > 読み込もうとするとなぜか元のデータと一致しません。
    > 何が問題でしょうか?
    >
    当該バイト配列に格納されている内容はBitCOnverterで読み込める形式ではな
    いあからです。当該バイト配列よりMemoryStreamを作成してそのストリームを
    BinaryReaderで読み込む必要があります。
記事No.83380 のレス /過去ログ142より / 関連記事表示
削除チェック/

■83382  Re[2]: Single配列の読み書きに関して
□投稿者/ ジングルベル -(2017/03/20(Mon) 11:03:48)
    > 当該バイト配列に格納されている内容はBitCOnverterで読み込める形式ではな
    > いあからです。

    同じバイト配列なのに読み込める形式ではないのはなぜでしょうか?
    もう少し詳しい解説をよろしくお願いいたします。
     
記事No.83380 のレス /過去ログ142より / 関連記事表示
削除チェック/

■83383  Re[1]: Single配列の読み書きに関して
□投稿者/ Azulean -(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 も無視しているようですが。
記事No.83380 のレス /過去ログ142より / 関連記事表示
削除チェック/

■83385  Re[2]: Single配列の読み書きに関して
□投稿者/ ジングルベル -(2017/03/20(Mon) 12:51:30)
    解決しました
    どうもありがとうございました。
     
記事No.83380 のレス / END /過去ログ142より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -