倍精度浮動小数点への変換について
投稿者 魔界の仮面弁士  (社会人)
投稿日時
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)
投稿者 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()
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/31 00:05:46
魔界の仮面弁士 さん、ありがとうございます。
BitConverterクラスという、ぴったりのものがあったのですね。
あっけにとられてしまいました。
shuさんもありがとうございます。
こちらも、BinaryReaderクラスに、ReadDoubleメソッドという、これまたぴったりのもので、びっくりしました。
おかげさまで、解決することができました。
本当にありがとうございました。
BitConverterクラスという、ぴったりのものがあったのですね。
あっけにとられてしまいました。
shuさんもありがとうございます。
こちらも、BinaryReaderクラスに、ReadDoubleメソッドという、これまたぴったりのもので、びっくりしました。
おかげさまで、解決することができました。
本当にありがとうございました。
16進ダンプで
0A D7 A3 70 3D 4A 3D 40
の8バイトが、倍精度浮動小数点型の値の
29.290000
を指しているようなのですが、その変換の仕方がわかりません。
LittleEndianと思っていますが、
Convert.ToDoubleメソッドを使おうとしても、欲しい値にはならなくて困っています。
ご指導をお願いいたします。