|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
Прямой порядок чтения из MemoryStream
Вот такая задача:
Имеем MemoryStream, в котором записано Код:
00 00 00 0A Код:
var A:TMemoryStream; C:Integer; Begin // ... загружаем эти байты из файла не суть A.Seek(0, soFromBeginning); A.Read(C,4); A.Free; end; Подскажите кто знает. Програмистами не рождаются, ими становятся! |
#2
|
||||
|
||||
Данные так перевёрнутыми и хранятся везде - вроде в проц так их вгонять проще
Можно сделать так: Код:
... function bth(ds: byte): string; const b: string = '0123456789ABCDEF'; begin Result:= b[(ds shr 4) + 1] + b[(ds and $F) + 1]; end; ... var b1, b2, b3, b4: byte; ... AssignFile( Reset( Read(SomeFile, b1, b2, b3, b4); C:= StrToInt('$' + bth(b4) + bth(b3) + bth(b2) + bth(b1)); Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
Этот пользователь сказал Спасибо Alegun за это полезное сообщение: | ||
SCrat.ORS (12.02.2015)
|
#3
|
||||
|
||||
Ох как же мог забыть про это:
Код:
C:= StrToInt('$' + bth(b4) + bth(b3) + bth(b2) + bth(b1)); Програмистами не рождаются, ими становятся! |
#4
|
||||
|
||||
Big Endian, Little Endian.
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#5
|
||||
|
||||
Цитата:
Код:
c:= swap(c shr 16) or (swap(c) shl 16); Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#6
|
||||
|
||||
А еще есть
Код:
asm bswap eax end; jmp $ ; Happy End! The Cake Is A Lie. |