倍精度浮動小数点への変換について への返答

投稿で使用できる特殊コードの説明。(別タブで開きます。)
本名は入力しないようにしましょう。
投稿した後で削除するときに使うパスワードです。返答があった後は削除できません。
返答する人が目安にします。相手が小学生か社会人かで返答の仕方も変わります。
最初の投稿が質問の場合、質問者が解決時にチェックしてください。(以降も追加書き込み・返信は可能です。)
※「過去ログ」について書くときはその過去ログのURLも書いてください。

以下の返答は逆順(新しい順)に並んでいます。

投稿者 シン  (社会人) 投稿日時 2011/3/31 00:05:46
魔界の仮面弁士 さん、ありがとうございます。
BitConverterクラスという、ぴったりのものがあったのですね。
あっけにとられてしまいました。

shuさんもありがとうございます。
こちらも、BinaryReaderクラスに、ReadDoubleメソッドという、これまたぴったりのもので、びっくりしました。

おかげさまで、解決することができました。
本当にありがとうございました。
投稿者 shu  (社会人) 投稿日時 2011/3/30 21:03:23
Stream版です

Import System.IO

'--- 読み
        Dim bytData() As Byte = {&HA, &HD7, &HA3, &H70, &H3D, &H4A, &H3D, &H40}

        '--- MemoryStreamはFileStreamとかでもよい
        Dim brd As New BinaryReader(New MemoryStream(bytData))

        Dim dblTmp = brd.ReadDouble()


'--- 書き
        Dim stm As New MemoryStream   '--- FileStreamとかでもよい
        Dim bwt As New BinaryWriter(stm)
        bwt.Write(29.29)
        bwt.Flush()

        Dim bytData2() As Byte = mem.ToArray()
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2011/3/30 20:48:37
こんな感じで。
Dim bin() As Byte = {&H0A, &HD7, &HA3, &H70, &H3D, &H4A, &H3D, &H40}
Dim dbl As Double = BitConverter.ToDouble(bin, 0)

投稿者 シン  (社会人) 投稿日時 2011/3/30 19:42:28
バイナリダンプを勉強しています。

16進ダンプで
0A D7 A3 70 3D 4A 3D 40
の8バイトが、倍精度浮動小数点型の値の
29.290000
を指しているようなのですが、その変換の仕方がわかりません。
LittleEndianと思っていますが、
Convert.ToDoubleメソッドを使おうとしても、欲しい値にはならなくて困っています。

ご指導をお願いいたします。