Главная страница
    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.049 c
2-1201165220
Guriev
2008-01-24 12:00
2008.02.17
Как сделать. чтобы ComboBox-ы заполнились и "зафиксировались"?


15-1200296233
Stilet
2008-01-14 10:37
2008.02.17
Как в VirtualBox настроить виртуальную сеть


15-1200148474
No_Dead
2008-01-12 17:34
2008.02.17
Вот как бы сформулировать получше?


2-1201454536
AntonUSAnoV
2008-01-27 20:22
2008.02.17
как быть с разрешением монитора ?


15-1200657118
Searcher
2008-01-18 14:51
2008.02.17
Cсылку на John Lennon Revolution mp3





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский