[Vb] Memory Adresse Typ Float ?

03/18/2011 21:47 bvz#1
Wie die Überschrift schon sagt hab ich grad Probleme eine Adresse eiznufügen die mal nicht 4 Bytes ist sondern vom Typ Float.. Gibts da eine leichte Lösung ?

@Pain glaub du hattest eine ;)
03/18/2011 22:21 P-a-i-n#2
Ich hab das selbe Problem gehabt mit dem Scheiss, da kannste Long oder sonst was nehmen geht einfach nicht.
Ich hab den Wert dann mit TSearch geändert und dann das ganze ByteArray überschrieben das ich auf den gewünschten Wert komme.
03/19/2011 06:34 xNopex#3
Quote:
da kannste Long oder sonst was nehmen geht einfach nicht.
Was genau überrascht dich an diesem Fakt?

Quote:
die mal nicht 4 Bytes ist sondern vom Typ Float..
Laut MSDN ist in VB.NET der Datentyp 'Single' sowas wie float:
[Only registered and activated users can see links. Click Here To Register...]

Sollte helfen...
03/19/2011 13:22 P-a-i-n#4
Quote:
Originally Posted by xNopex View Post
Was genau überrascht dich an diesem Fakt?



Laut MSDN ist in VB.NET der Datentyp 'Single' sowas wie float:
[Only registered and activated users can see links. Click Here To Register...]

Sollte helfen...
Geht trotzdem nicht hab es mal getestet lese ich ein Wert aus der
200.0076294 gebe ihn als Single wieder = -3.39197412
Schreibe ich dann mit Single mit 45.00 = 1.57772181E-29

Die ergebnisse hat mir alle tsearch angezeigt nach der änderung.
Wenn man mal googelt findet man viele die das Float problem in VB haben

Das einzigste was Hilfreich ist
[Only registered and activated users can see links. Click Here To Register...]

Wird wohl was mit den Unterschiedlichen größen zutun haben.
03/22/2011 14:15 bvz#5
Ich versuchs mal danke :)

wo ist denn z.B abs deklariert ? :s

Code:
Static Function SingleToFloat(X)
    Dim e As Integer
    Dim float As Long
    Dim m As Long
 
    If X <> 0 Then
        e = Math.Round(Log2(Abs(X)) - 0.5)
        m = (Abs(X) / (2 ^ e) - 1) * 2 ^ 23
        e = e + 127
        float = m
        float = float Or (e * &H800000)
        If X < 0 Then
            float = float Or &H80000000
        End If
    Else
        float = 0
    End If
 
    SingleToFloat = float
End Function
 
Static Function Log2(X)
   Log2 = Log(X) / Log(2#)
End Function
03/22/2011 16:41 P-a-i-n#6
wie wär es mal mit
Imports System.Math ^^
03/22/2011 18:22 bvz#7
Das hab ich gesucht aber wusste nicht mehr wie es heißt XD

aber (Log2( [....] wird immer noch angezeigt