Armando
Armando

Reputation:

Converting a byte() array to a double in VB.Net

I have this situation. I have a real stored in a varbinary field in a sql 2005 database. As I can't convert a varbinary to a real in sql 2005, I'm trying to do that in vb.net.

That field gets stored as a byte() array in a DataTable.

Now I would like to read that byte() into a double, or decimal variable. But I don't have much of a clue on how to do that...

Upvotes: 1

Views: 13245

Answers (3)

biozinc
biozinc

Reputation: 4739

I don't know VB.net well, but know the .NET libraries.

Wrap the byte[] in a MemoryStream and wrap that in a BinaryReader. Then use the BinaryReader.ReadDouble() method. See here and here for MSDN pages.

Edit in response to this

You are looking for a piece of code looking like this:

'declare a test array
Dim testArray As Byte() = {0, 0, 0, 0}
'wrap it into a memory stream
Dim memStream As MemoryStream = new MemoryStream(testArray)
'wrap the stream in a binary reader
Dim bReader As BinaryReader = new BinaryReader(memStream)
'read a 32bit integer from the stream using the reader
Dim count As Integer = bReader.ReadInt32()

Upvotes: 1

partha
partha

Reputation:

Public Function GetDateFromBytes(ByRef value() As Byte, _
                                    ByRef startindex As Int32) As Date
    'create a aray of Ints
    Dim IntValues() As Int32 = {BitConverter.ToInt32(value, startindex), _
                                    BitConverter.ToInt32(value, (startindex + 7)), _
                                    BitConverter.ToInt32(value, startindex + 15), _
                                     BitConverter.ToInt32(value, startindex + 31)}

    Return Date.FromBinary(New Decimal(IntValues))

End Function

Upvotes: 0

Jon Skeet
Jon Skeet

Reputation: 1504122

It really depends on how it's stored, but BitConverter.ToDouble may be your friend. That's assuming it's in IEE754 format. Where are you getting the data from in the first place?

Upvotes: 2

Related Questions