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

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

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

数値データをバイト配列化する方法

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

■93547 / inTopicNo.1)  数値データをバイト配列化する方法
  
□投稿者/ カルピス (1回)-(2019/12/20(Fri) 17:10:34)

分類:[.NET 全般] 

数値データをバイナリデータとして保存したい場合、
以下のようにwriteを使って順番に出力することでできます。


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

        writer.Write(123!)         
        writer.Write(456#)         
        writer.Write(789%)        

            End Using
        End Using


一方で、数値データをバイト配列に変換したい場合にはどうすれば良いですか?

BitConverter.GetBytes
でバイト配列を出力後に、
https://www.atmarkit.co.jp/ait/articles/1712/27/news018.html

このページのようにして
array1.CopyTo(newArray, 0)
を使って地道に
コピーして繋げていくしかないですか?

そうするとコードが長くなってしまい
非常に見づらいです。

もっとスマートな方法があれば教えてください。

引用返信 編集キー/
■93548 / inTopicNo.2)  Re[1]: 数値データをバイト配列化する方法
□投稿者/ shu (1212回)-(2019/12/20(Fri) 17:26:58)
No93547 (カルピス さん) に返信

BinaryWriterで描いたファイルであれば
BinaryReaderで
ReadXXXXX (※XXXXは読み取る型による。integerであれば ReadInt32)
で取得すればよいです。


引用返信 編集キー/
■93549 / inTopicNo.3)  Re[2]: 数値データをバイト配列化する方法
□投稿者/ Hongliang (940回)-(2019/12/20(Fri) 17:30:07)
いまいち質問の意図を読み取れませんでしたが、こういうことでしょうか。

Dim stream As New MemoryStream
Using writer As New BinaryWriter(stream)
    writer.Write(123!)
    writer.Write(456#)
    writer.Write(789%)
End Using
Dim arr As Byte() = stream.ToArray()

引用返信 編集キー/
■93550 / inTopicNo.4)  Re[3]: 数値データをバイト配列化する方法
□投稿者/ カルピス (2回)-(2019/12/20(Fri) 17:33:42)
No93549 (Hongliang さん) に返信

どうもありがとうございます。
これでした。

解決済み
引用返信 編集キー/
■93551 / inTopicNo.5)  Re[4]: 数値データをバイト配列化する方法
□投稿者/ カルピス (3回)-(2019/12/20(Fri) 17:35:43)
ちなみに
stream As Stream = New FileStream(OutPath, FileMode.Create)

は最後にdisposeする必要がありますが、
stream As New MemoryStream
はdisposeしなくても良いのでしょうか?

引用返信 編集キー/
■93554 / inTopicNo.6)  Re[5]: 数値データをバイト配列化する方法
□投稿者/ Hongliang (941回)-(2019/12/20(Fri) 18:45:00)
BinaryWriter::Disposeは内部で自分が抱えているStreamのDisposeを行うので、あえてStreamの方のDisposeまで呼び出す必要はありません。
// New BinaryWriter(stream, encoding, leaveOpen)を使ってstreamのDisposeをさせないこともできます。
引用返信 編集キー/
■93556 / inTopicNo.7)  Re[6]: 数値データをバイト配列化する方法
□投稿者/ PANG2 (326回)-(2019/12/21(Sat) 11:44:48)
No93554 (Hongliang さん) に返信
> BinaryWriter::Disposeは内部で自分が抱えているStreamのDisposeを行うので、
DisposeではなくCloseでは?

Dim arr As Byte() = stream.ToArray()
の後にstream.Disposeするか、宣言でusingを使うのがよいでしょう。
引用返信 編集キー/
■93557 / inTopicNo.8)  Re[7]: 数値データをバイト配列化する方法
□投稿者/ カルピス (5回)-(2019/12/21(Sat) 20:35:20)
そういうことでしたか
どうもありがとうございました。
解決済み
引用返信 編集キー/

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


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

このトピックに書きこむ