![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
||||
|
||||
|
Вот такая задача:
Имеем 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.
|
|
#5
|
||||
|
||||
|
Цитата:
Код:
c:= swap(c shr 16) or (swap(c) shl 16); |
|
#6
|
||||
|
||||
|
А еще есть
Код:
asm bswap eax end; ![]() |