Чтение области памяти и определение типа данных

  • Автор темы Автор темы _DeMiUrG_
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.
D

_DeMiUrG_

Я читаю область памяти функцией BlockRead(F,DynArray,sizeof(DynArray))
DynArray обьявляю как массив данных типа Byte

у меня некоторые значения Byte
а некотороые Integer или Float

как перевести значения области памяти Byte
в числа Integer Float ?
 
Код:
var
i, k:Integer;

begin
k:=0;
For i:=5 to 8 do
k:=k shl 8 +DynArray[i];
end;
 
Для float, например, так можно:
Код:
type
float = single;

floatbyte = record
Case boolean of
True:(f:float);
False:(b:array[0..3] of byte);
end;

function ExtractFloatValue(Buf: array of byte; FromByte: Integer): float;
var fb:floatbyte;
begin
fb.b[0]:=Buf[FromByte+0];
fb.b[1]:=Buf[FromByte+1];
fb.b[2]:=Buf[FromByte+2];
fb.b[3]:=Buf[FromByte+3];
Result:=fb.f;
end;

P.S. Только порядок следования байт в float нужно уточнить, может там перестановка байт нужна 0<->3 и 1<->2.
 
спс буду пробовать
 
пришел к варианту с функцией CopyMemory
те есть обьявлен DynArray

потом идет считывание из файла

BlockRead(F,DynArray,sizeof(DynArray));


далее я пытаюсь присвоить значения функцией
CopyMemory(@XX,@DynArray,4);
и в этом месте компилятор ругается
чтото на обращение к памяти
что посоветуйте?
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab