Как в числе типа дабл поменять байты местами
От: Лёлик Россия www.dosug.nu
Дата: 30.05.02 09:01
Оценка:
Просто число читается из бинарного файла в котором байты находятся в обратном порядке
Re: Как в числе типа дабл поменять байты местами
От: MaximS  
Дата: 02.06.02 10:04
Оценка:
Здравствуйте Лёлик, Вы писали:

Лё> Просто число читается из бинарного файла в котором байты находятся в обратном порядке


Попробуй так.

Dim a As Double
Dim b As String
a = 101110010
b = CStr(a)
b = StrReverse(b)
a = CDbl(b)
Re[2]: Как в числе типа дабл поменять байты местами
От: Лёлик Россия www.dosug.nu
Дата: 02.06.02 10:34
Оценка:
Проблема не в том чтобы из числа"-123456.78е90" сделать
"09е654321-" а в том что в памяти машины это число занимает 8 байт и их имеено я хочу двигать и менять местами

Здравствуйте MaximS, Вы писали:

MS>Здравствуйте Лёлик, Вы писали:


Лё>> Просто число читается из бинарного файла в котором байты находятся в обратном порядке


MS>Попробуй так.


MS>Dim a As Double

MS>Dim b As String
MS>a = 101110010
MS>b = CStr(a)
MS>b = StrReverse(b)
MS>a = CDbl(b)
Re: Как в числе типа дабл поменять байты местами
От: Chorkov Россия  
Дата: 06.06.02 10:14
Оценка:
Здравствуйте Лёлик, Вы писали:

Лё> Просто число читается из бинарного файла в котором байты находятся в обратном порядке




Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (byval Destination As long,byval Source As long, ByVal Length As Long)

...

public Function MoveBytes(ByVal D as Double) as Double
  dim D2 as Double

  CopyMemory VarPtr(D2)+0,VarPtr(D)+7,1
  CopyMemory VarPtr(D2)+1,VarPtr(D)+6,1
  CopyMemory VarPtr(D2)+2,VarPtr(D)+5,1
  CopyMemory VarPtr(D2)+3,VarPtr(D)+4,1
  CopyMemory VarPtr(D2)+4,VarPtr(D)+3,1
  CopyMemory VarPtr(D2)+5,VarPtr(D)+2,1
  CopyMemory VarPtr(D2)+6,VarPtr(D)+1,1
  CopyMemory VarPtr(D2)+7,VarPtr(D)+0,1

  MoveBytes=D2
end Function
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.