2008-10-23 8 views
1

J'ai cette situation. J'ai un réel stocké dans un champ varbinary dans une base de données sql 2005. Comme je ne peux pas convertir un varbinary en real en sql 2005, j'essaye de le faire dans vb.net.Conversion d'un tableau byte() en double dans VB.Net

Ce champ est stocké en tant que tableau byte() dans un DataTable.

Maintenant, je voudrais lire ce byte() dans une variable double ou décimale. Mais je ne ai pas beaucoup d'indice sur la façon de le faire ...

Répondre

2

Cela dépend vraiment de la façon dont il est stocké, mais BitConverter.ToDouble peut être votre ami. C'est en supposant que c'est au format IEE754. D'où obtenez-vous les données en premier lieu?

1

Je ne connais pas bien VB.net, mais connais les bibliothèques .NET. Envelopper l'octet [] dans un MemoryStream et l'envelopper dans un BinaryReader.

Ensuite, utilisez la méthode BinaryReader.ReadDouble(). Voir here et here pour les pages MSDN.

Modifier en réponse à this

Vous êtes à la recherche d'un morceau de code qui ressemble à ceci:

'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
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 
+1

Désolé, mon prev. le code était complètement faux. ici, ci-dessous, est le bon –