Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Байты в число и число в байты нужной размерности


Страницы:   1 2 3

РП ©   (2010-05-20 16:37:00) 

Допустим:

байты: 145 193 041равны числу 19410
type
TMyInteger = array[0..3] of byte;
...
var
MyInteger:TMyInteger;
N:Integer;
...
Pointer(MyInteger):=Pointer(N);


Как можно таким образом преобразовать  10 байт в число, допустим записать его в строку. И обратно из этого числа в 10 байт.


Anatoly Podgoretsky   (2010-05-21 07:46:00) [21]

> РП  (20.05.2010 19:22:24)  [24]

Это хуже, теперь три байта, но зато теперь в массив помещается.


Игорь Шевченко   (2010-05-20 23:13:00) [22]

то есть, ты еще и вопросы задавать не умеешь


РП   (2010-05-20 19:22:00) [23]

Anatoly Podgoretsky  


> Допустим 145 193 041 это все таки 9 байт

145
193
041
Это байты, 3 байта в chr для удобства.


Anatoly Podgoretsky   (2010-05-20 19:00:00) [24]

Допустим 145 193 041 это все таки 9 байт
Допустим, что массив array[0..3] в состоянии хранить только четыре байта.
Сообственно больше и допускать не надо.


РП   (2010-05-20 18:46:00) [25]

Про это знаю. А конкретно как сделать перевод..


RWolf   (2010-05-20 17:37:00) [26]


> РП   (20.05.10 17:28) [20]

http://www.submanifold.be/triade/GInt/gint.html


РП   (2010-05-20 17:28:00) [27]

Все понял. Может кто встречал такие функции?


Омлет   (2010-05-20 17:26:00) [28]

Нужна строковая арифметика.


Плохиш   (2010-05-20 17:20:00) [29]


> MyInteger:TMyInteger;
> N:Integer;
>


> Pointer(N):= Pointer(MyInteger);
>

=
N: Integer Absolute MyInteger;


RWolf   (2010-05-20 17:19:00) [30]

>  [15]
и не должно. Delphi умеет арифметику максимум 64-разрядных целых чисел. Если надо больше — надо писать свои процедуры для арифметических действий


Медвежонок Пятачок   (2010-05-20 17:17:00) [31]

но как больше array[0..3] это не катит.

C интегером не катит. Зато катит с int64 [0..7]


РП   (2010-05-20 17:14:00) [32]

type
TMyInteger = array[0..3] of byte;

var
MyInteger:TMyInteger;
N:Integer;
begin
MyInteger[0] := 145;
MyInteger[1] := 193;
MyInteger[2] := 041;

Pointer(N):= Pointer(MyInteger);


реузльтат: 2736529

но как больше array[0..3] это не катит.


Медвежонок Пятачок   (2010-05-20 17:10:00) [33]

байты: 145 193 041 равны числу 19410

они там тоже перевернутые


РП   (2010-05-20 17:09:00) [34]

RWolf, не в этом дело..

если взять

байты: 145 193 041 равны числу 19410
type
TMyInteger = array[0..3] of byte;
...
var
MyInteger:TMyInteger;
N:Integer;
...
Pointer(MyInteger):=Pointer(N);


RWolf   (2010-05-20 17:05:00) [35]


> РП   (20.05.10 17:02) [11]

расположить в строке символы в обратном порядке совсем несложно.


РП   (2010-05-20 17:02:00) [36]

RWolf
в этом и загвостка, что я получу от остатка.. перевернет число

346/10 =6
34/10 = 4
3/10 = 3

или я не так понял?


RWolf   (2010-05-20 16:53:00) [37]


> РП   (20.05.10 16:37) 

напиши процедуры для арифметических действий с 10-байтовыми числами.  Число переводи в десятичное строковое представление взятием остатка от деления на 10 в цикле.


turbouser   (2010-05-20 16:48:00) [38]

:)


turbouser   (2010-05-20 16:48:00) [39]


> Пылкий   (20.05.10 16:44) [5]

Int64, UInt64 ?


Медвежонок Пятачок   (2010-05-20 16:47:00) [40]

int64, pint64


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо