Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.02.17;
Скачать: [xml.tar.bz2];

Вниз

Данные из массива   Найти похожие ветки 

 
Nicola   (2008-01-25 12:28) [0]

У меня есть такой массив:
array[0..xx] of Byte

И сам вопрос, как мне с некоторой позиции в массиве получить числовые данные: Byte, Word, DWord, UInt64, ShortInt, SmallInt, LongInt, Int64.

Ну например, у меня такой массив:

$00 $01 $12 $34 $56 $78 $79

и мне нужно начиная с 3 элемента получить Word, который в этом случае будет: $1234

Хочется узнать наиболее грамотное решение. Спасибо.


 
Palladin ©   (2008-01-25 12:28) [1]

Move + F1


 
Nicola   (2008-01-25 12:43) [2]

Эмм... а это наиболее хорошее/оптимальное решение?

Я почему то думал, что мне нужно копать куда-то в сторону такого:

for i := 0 to 2 {word}- 1 do
   Inc(Result, PByte(LongWord(Array) + i)^ shl ((...i) * 8))


Ну я конечно бред написал, я просто пытался как-то в таком ключе реализовать.


 
Palladin ©   (2008-01-25 12:45) [3]

Эмм... да, со всех сторон
а вот у тебя девствительно бред...


 
palva ©   (2008-01-25 13:03) [4]

> и мне нужно начиная с 3 элемента получить Word, который в этом случае будет: $1234
Каким он будет - это отдельный вопрос. Но если вам надо получить $1234, то, наверно, так:
w:= a[2] SHL 8 + a[3]


 
Семеныч   (2008-01-25 16:13) [5]

> Nicola   (25.01.08 12:28)

var A: packed array[0..xx] of Byte;

> как мне с некоторой позиции в массиве получить
> числовые данные: Byte, Word, DWord, UInt64, ShortInt, SmallInt,
> LongInt, Int64.

ByteValue = PByte(@A[i])^;
WordValue = PWord(@A[i])^;
....

> Ну например, у меня такой массив:
> $00 $01 $12 $34 $56 $78 $79
> и мне нужно начиная с 3 элемента получить Word, который
> в этом случае будет: $1234

На платформах x86 байты хранятся в обратном порядке (старший байт по младшему адресу, младший байт по старшему адресу). Поэтому при использовании такого способа получим значение $3412. Если это не устраивает, то в полученнном числе нужно провести своппинг байтов.


 
DiamondShark ©   (2008-01-25 16:18) [6]


> На платформах x86 байты хранятся в обратном порядке (старший
> байт по младшему адресу, младший байт по старшему адресу).

Эт врядли.


 
Семеныч   (2008-01-25 16:24) [7]

> DiamondShark ©   (25.01.08 16:18) [6]

В задаче речь идет о целых числах. Теперь тоже вряд ли?


 
MBo ©   (2008-01-25 16:49) [8]

>Семеныч
про обратный порядок и $3412 - верно, только во фразе
"старший байт по младшему адресу, младший байт по старшему адресу"
всё наоборот.


 
Сергей М. ©   (2008-01-25 16:54) [9]

Мастера выворачиваются наизнанку, а атем временем втор "шедевра" плюет с высокой колокольни.

Шоу маст гоу он ?)


 
Семеныч   (2008-01-25 16:58) [10]

> MBo ©   (25.01.08 16:49) [8]

Да, неточно выразился. Младший по младшему, конечно. Как раз поэтому обратный порядок и получается.
:о)


 
DiamondShark ©   (2008-01-25 17:02) [11]


> Как раз поэтому обратный порядок и получается

Получается где?
Обратный по отношению к чему?


 
palva ©   (2008-01-25 17:06) [12]


> Обратный по отношению к чему?

Обратный по отношению к прямому.


 
clickmaker ©   (2008-01-25 17:10) [13]


> [12] palva ©   (25.01.08 17:06)
>
> > Обратный по отношению к чему?
>
> Обратный по отношению к прямому

- Вам в какую сторону?
- В противоположную


 
Dib@zol ©   (2008-01-25 17:16) [14]

А если тупо с помощью PUSH и MOV BYTE/WORD/DWORD/QWORD/TBYTE PTR [EAX] скинуть в стек, а потом POP-ом достать?


 
Anatoly Podgoretsky ©   (2008-01-25 18:50) [15]

> Семеныч  (25.01.2008 16:58:10)  [10]

Не обратный, а прямой.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2008.02.17;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.046 c
15-1200452599
Slider007
2008-01-16 06:03
2008.02.17
С днем рождения ! 16 января 2008 среда


15-1200468306
Kolan
2008-01-16 10:25
2008.02.17
А вы знали, что Vista User Experience гайдлайны отличная вещь?


2-1201085924
Rusl92
2008-01-23 13:58
2008.02.17
Печать таблицы из Бд


2-1200951161
zeroed
2008-01-22 00:32
2008.02.17
HashMap на Delphi?


15-1200210870
sumkinf
2008-01-13 10:54
2008.02.17
Крякозябры в HLP





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский