1

我有这种情况。我有一个真实的存储在 sql 2005 数据库的 varbinary 字段中。由于我无法在 sql 2005 中将 varbinary 转换为实数,因此我正在尝试在 vb.net 中执行此操作。

该字段作为 byte() 数组存储在 DataTable 中。

现在我想将该 byte() 读入一个双精度或十进制变量。但我对如何做到这一点没有太多线索......

4

3 回答 3

2

这实际上取决于它的存储方式,但BitConverter.ToDouble可能是您的朋友。假设它是 IEE754 格式。您首先从哪里获取数据?

于 2008-10-23T20:03:51.790 回答
1

我不太了解 VB.net,但知道 .NET 库。

将 byte[] 包装在 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()
于 2008-10-23T20:09:49.703 回答
0
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
于 2009-03-18T11:43:19.733 回答