Преобразование массива byte () в double в VB.Net - PullRequest
1 голос
/ 23 октября 2008

У меня такая ситуация. У меня есть реальный хранится в поле varbinary в базе данных SQL 2005 года. Поскольку я не могу преобразовать varbinary в реальный в SQL 2005, я пытаюсь сделать это в vb.net.

Это поле сохраняется в виде массива byte () в DataTable.

Теперь я хотел бы прочитать этот byte () в двойную или десятичную переменную. Но я понятия не имею, как это сделать ...

Ответы [ 3 ]

2 голосов
/ 24 октября 2008

Это действительно зависит от того, как оно хранится, но BitConverter.ToDouble может быть вашим другом. Это при условии, что это в формате IEE754. Откуда вы берете данные?

1 голос
/ 24 октября 2008

Я плохо знаю VB.net, но знаю библиотеки .NET.

Оберните байт [] в MemoryStream и оберните его в BinaryReader. Затем используйте метод BinaryReader.ReadDouble (). См. здесь и здесь для страниц MSDN.

Изменить в ответ на это

Вы ищете фрагмент кода, похожий на этот:

'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()
0 голосов
/ 18 марта 2009
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
...