powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как преобразовать 6байт(Float) в 8байт(Double) или в 4байта(single)
2 сообщений из 2, страница 1 из 1
Как преобразовать 6байт(Float) в 8байт(Double) или в 4байта(single)
    #34811091
Focus_NEW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ситуация такая. Получаем с устройства массив байт втом числе и одинарное с плавующей точкой в виде 6 байт (как в паскале или делфи).
Вопрос как преобразовать эти 6 байт в переменную типа Double или Single чтобы потом с ней работать в VB6
...
Рейтинг: 0 / 0
Как преобразовать 6байт(Float) в 8байт(Double) или в 4байта(single)
    #34813085
Focus_NEW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нашел в гугле.
Вот пример кому интересно.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
Public Function RealToDouble(ByVal Data As String) As Double
Dim dMantissa As Double
Dim i As Integer
Dim j As Long
Dim k As Long
Dim t As Integer
If Len(Data) <>  6  Then
'Err.Raise
'exception
Exit Function
End If

'accumulate the mantissa
dMantissa =  1 
For i =  6  To  2  Step - 1 
    If i =  6  Then
        t =  6 
    Else
        t =  7 
    End If
    For j = CLng(t) To  0  Step - 1 
        k = k +  1 
        If (Asc(Mid$(Data, i,  1 )) And CLng( 2  ^ j)) <>  0  Then
        dMantissa = dMantissa +  2  ^ -k
        End If
    Next j
Next i

'finally, assemble all the pieces into a number
If (Asc(Mid$(Data,  6 ,  1 )) And &H80) = &H80 Then
    RealToDouble = -dMantissa *  2  ^ (Asc(Mid$(Data,  1 ,  1 )) -  129 )
Else
    RealToDouble = dMantissa *  2  ^ (Asc(Mid$(Data,  1 ,  1 )) -  129 )
End If

'Thanks for your help
'David
End Function
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как преобразовать 6байт(Float) в 8байт(Double) или в 4байта(single)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]