/ Forside / Teknologi / Udvikling / VB/Basic / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
VB/Basic
#NavnPoint
berpox 2425
pete 1435
CADmageren 1251
gibson 1230
Phylock 887
gandalf 836
AntonV 790
strarup 750
Benjamin... 700
10  tom.kise 610
Float?
Fra : Bjørn


Dato : 24-10-05 10:11

Hej NG,

Sidder med et lille projekt.

Jeg har 4 enkeltstående bytes, der tilsammen udgør en floating point
variable. Hvorfor jeg får det serveret som 4 byte kan jeg ikke lige svare
på...

Hvordan kommer jeg har 4 byte => float?

Indeholder bytene henholdsvis 62, 128, 0 og 0 - så er tallet 0,25.

--
Mvh Bjørn :)



 
 
Repzak (24-10-2005)
Kommentar
Fra : Repzak


Dato : 24-10-05 16:43

> Jeg har 4 enkeltstående bytes, der tilsammen udgør en floating point
> variable. Hvorfor jeg får det serveret som 4 byte kan jeg ikke lige svare
> på...

Hey
jeg er ikke sikker på det virker til det, men lavede noget endgang hvor jeg
modtog et float signal som 4 bytes over seriel porten, og den kode, skrevet
af en franskmand kunne gøre mit job... måske det er samme kodning som dit..
men det er desværre for længe siden ...

mvh
kasper

Function decodeIEEE(Car1, Car2, Car3, Car4 As Byte) As String
Dim decodeieee1 As Single
Dim signe As Integer
Dim exposant As Integer
Dim Mantisse As Single

If Car1 + Car2 + Car3 + Car4 = 0 Then
decodeieee1 = 0
Exit Function
End If
'** récupération du signe **
signe = 1
If Car1 And 128 Then signe = -1

'** récupération de l'exposant **
If Car1 And 64 Then exposant = 128
If Car1 And 32 Then exposant = exposant + 64
If Car1 And 16 Then exposant = exposant + 32
If Car1 And 8 Then exposant = exposant + 16
If Car1 And 4 Then exposant = exposant + 8
If Car1 And 2 Then exposant = exposant + 4
If Car1 And 1 Then exposant = exposant + 2
If Car2 And 128 Then exposant = exposant + 1

'** récupération de la mantisse **
If Car2 And 64 Then Mantisse = 2 ^ -1
If Car2 And 32 Then Mantisse = Mantisse + 2 ^ -2
If Car2 And 16 Then Mantisse = Mantisse + 2 ^ -3
If Car2 And 8 Then Mantisse = Mantisse + 2 ^ -4
If Car2 And 4 Then Mantisse = Mantisse + 2 ^ -5
If Car2 And 2 Then Mantisse = Mantisse + 2 ^ -6
If Car2 And 1 Then Mantisse = Mantisse + 2 ^ -7
If Car3 And 128 Then Mantisse = Mantisse + 2 ^ -8
If Car3 And 64 Then Mantisse = Mantisse + 2 ^ -9
If Car3 And 32 Then Mantisse = Mantisse + 2 ^ -10
If Car3 And 16 Then Mantisse = Mantisse + 2 ^ -11
If Car3 And 8 Then Mantisse = Mantisse + 2 ^ -12
If Car3 And 4 Then Mantisse = Mantisse + 2 ^ -13
If Car3 And 2 Then Mantisse = Mantisse + 2 ^ -14
If Car3 And 1 Then Mantisse = Mantisse + 2 ^ -15
If Car4 And 128 Then Mantisse = Mantisse + 2 ^ -16
If Car4 And 64 Then Mantisse = Mantisse + 2 ^ -17
If Car4 And 32 Then Mantisse = Mantisse + 2 ^ -18
If Car4 And 16 Then Mantisse = Mantisse + 2 ^ -19
If Car4 And 8 Then Mantisse = Mantisse + 2 ^ -20
If Car4 And 4 Then Mantisse = Mantisse + 2 ^ -21
If Car4 And 2 Then Mantisse = Mantisse + 2 ^ -22
If Car4 And 1 Then Mantisse = Mantisse + 2 ^ -23

decodeieee1 = ((1 + Mantisse) * 2 ^ (exposant - 127) * signe)


If Mid(decodeieee1, 4, 1) = "E" Or Mid(decodeieee1, 8, 1) = 0 Or
Mid(decodeieee1, 9, 1) = "E" Or Mid(decodeieee1, 2, 1) = "E" Then
decodeieee1 = decodeieee1 * 1000000000
decodeIEEE = Round(decodeieee1, 1) & " ns"
'Form1.Picture1.Print "Time/Div : " & Round(decodeIEEE, 1) & " ns"
GoTo sl
End If
If Mid(decodeieee1, 1, 1) <> 0 Then
decodeIEEE = decodeieee1 & " s"
'Form1.Picture1.Print "Time/Div : " & decodeIEEE & " s"
GoTo sl
End If
If Mid(decodeieee1, 3, 1) Then
decodeIEEE = decodeieee1 * 1000 & " ms"
'Form1.Picture1.Print "Time/Div : " & decodeIEEE * 1000 & " ms"
GoTo sl
End If

If Mid(decodeieee1, 3, 1) <> 0 Or Mid(decodeieee1, 4, 1) Or Mid(decodeieee1,
5, 1) <> 0 Then
decodeIEEE = decodeieee1 * 1000 & " ms"
'Form1.Picture1.Print "Time/Div : " & decodeIEEE * 1000 & " ms"
GoTo sl
End If
If Mid(decodeieee1, 6, 1) <> 0 Or Mid(decodeieee1, 7, 1) <> 0 Or
Mid(decodeieee1, 8, 1) <> 0 Then
decodeIEEE = Round(decodeieee1 * 1000000, 1) & " us"

'Form1.Picture1.Print "Time/Div : " & Round(decodeIEEE * 1000000, 1) & " us"
End If
sl:

End Function



Bjørn (03-11-2005)
Kommentar
Fra : Bjørn


Dato : 03-11-05 15:19


"Repzak" <repzak@GEDhotmail.com> skrev i en meddelelse
news:435d00ec$0$41141$14726298@news.sunsite.dk...
>> Jeg har 4 enkeltstående bytes, der tilsammen udgør en floating point
>> variable. Hvorfor jeg får det serveret som 4 byte kan jeg ikke lige svare
>> på...
>
> Hey
> jeg er ikke sikker på det virker til det, men lavede noget endgang hvor
> jeg modtog et float signal som 4 bytes over seriel porten, og den kode,
> skrevet af en franskmand kunne gøre mit job... måske det er samme kodning
> som dit.. men det er desværre for længe siden ...

Takker - det ser fornuftigt ud :)

- er godt nok et par dage siden jeg fik det til at spille, men glemte at
sige tak

--
Mvh Bjørn



Søg
Reklame
Statistik
Spørgsmål : 177579
Tips : 31968
Nyheder : 719565
Indlæg : 6409074
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste