Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.12.2016, 19:58   #1
АНАТОЛИЙ249
Пользователь
 
Регистрация: 05.02.2007
Сообщений: 91
По умолчанию Вопрос по функции перевода числа

Интернет перевернул подходящего не нашел ,как перевести любое целое число (именно в 4 байта) и обратно перевести именно (из 4 байт в целое число) ?


type
Tmas=record
bf:[0..3] of array;
end;




function(value:integer):Tmas;
var
ms:Tmas;
begin
ms.bf[0]:=value shl 8;
ms.bf[1]:=value shl 8;
ms.bf[2]:=value shl 8;
ms.bf[3]:=value shl 8;
result:=ms;
end;

Примерный код . Спасибо.
АНАТОЛИЙ249 вне форума Ответить с цитированием
Старый 24.12.2016, 20:11   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
type Tmas = array [0..3] of Byte;
     Pmas = ^Tmas;

var i,k: Integer;
    ms: Tmas;
    p: Pmas;

  k:=95437255;
  p:=@k;
  for i:=0 to 3 do ms[i]:=p^[3-i];
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 24.12.2016, 20:21   #3
АНАТОЛИЙ249
Пользователь
 
Регистрация: 05.02.2007
Сообщений: 91
По умолчанию

Спасибо за помощь . А обратно как в число ?
АНАТОЛИЙ249 вне форума Ответить с цитированием
Старый 24.12.2016, 21:41   #4
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,867
По умолчанию

Код:
var 
  mas : array[0..3] of Byte;
  I : Integer absolute mas;
Присваиваешь значение массиву - видишь результат в I
Присваиваешь значение I - видишь результат в массиве.
northener вне форума Ответить с цитированием
Старый 24.12.2016, 22:11   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Тоже можно, не считая того, что байты в массиве будут соответствовать тому, как переменная в памяти размещается - единичка в массиве будет 01, 00, 00, 00
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 25.12.2016, 00:50   #6
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,867
По умолчанию

Значит ТС должен изучить тему Порядок байтов и разобраться самому что ему надо.
northener вне форума Ответить с цитированием
Старый 25.12.2016, 08:08   #7
АНАТОЛИЙ249
Пользователь
 
Регистрация: 05.02.2007
Сообщений: 91
По умолчанию

Нашёл на просторах интернета .

function ConvertToFloat(ms:Tmas): integer;
var
Data: Array[0..5] of Byte;
S: String;
i: Integer;
begin
S := '';
for i := 0 to 3 do
begin
S := S + format('%.2x', [ms[i]]);
end;
result := StrToInt64('$'+S);
end;


Работает возвращает то число которое было задано



Спасибо всем за ответы и помощь.

Последний раз редактировалось АНАТОЛИЙ249; 25.12.2016 в 08:36.
АНАТОЛИЙ249 вне форума Ответить с цитированием
Старый 25.12.2016, 08:59   #8
АНАТОЛИЙ249
Пользователь
 
Регистрация: 05.02.2007
Сообщений: 91
По умолчанию

Вот обе функции:

type Tmas = array [0..3] of Byte;
Pmas = ^Tmas;





function intobyte4(value:integer): Tmas;
var
i,k: Integer;
ms: Tmas;
p: Pmas;
begin
p:=@value;
for i:=0 to 3 do ms[i]:=p^[3-i];
result:=ms;
end;



function ConvertToFloat(ms:Tmas): integer;
var
Data: Array[0..5] of Byte;
S: String;
i: Integer;
begin
S := '';
for i := 0 to 3 do
begin
S := S + format('%.2x', [ms[i]]);
end;
result := StrToInt64('$'+S);
end;


Спасибо всем за помощь и ответы вопрос можно закрывать.
АНАТОЛИЙ249 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
перевода целого числа в римскую систему счисления enternity Помощь студентам 2 17.10.2011 01:37
Программа перевода числа из десятичного в двоичное. MiraJe Qt и кроссплатформенное программирование С/С++ 7 16.01.2011 14:11
функции перевода Irenka Общие вопросы C/C++ 4 30.05.2010 00:29
Программа перевода числа из 10 СС в 2 СС fs444 Общие вопросы C/C++ 12 25.02.2010 08:10
Алгоритм перевода числа в hex text. Ivan_32 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 02.12.2008 21:36