我有这种情况。 我有一个真正的存储在sql 2005数据库的varbinary字段中。 由于我无法将varbinary转换为sql 2005中的真实,我试图在vb.net中这样做。
该字段作为byte()数组存储在DataTable中。
现在我想把byte()读成double或decimal变量。 但我对如何做到这一点没有太多线索......
答案 0 :(得分:2)
这实际上取决于它的存储方式,但BitConverter.ToDouble可能是你的朋友。这是假设它是IEE754格式。你从哪里获得数据?
答案 1 :(得分:1)
我不太了解VB.net,但了解.NET库。
将byte []包装在MemoryStream中并将其包装在BinaryReader中。然后使用BinaryReader.ReadDouble()方法。有关MSDN页面,请参阅here和here。
编辑以回复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()
答案 2 :(得分: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