Главная страница
    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.043 c
2-1200933382
Chysti
2008-01-21 19:36
2008.02.17
Как поменять свойство Caption у всех компонентов формы


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


2-1201155932
Василий К.
2008-01-24 09:25
2008.02.17
Extended в TThread и его деление...


4-1183687219
AlexanderMS
2007-07-06 06:00
2008.02.17
Стиль элементов управления.


15-1200229817
wp2
2008-01-13 16:10
2008.02.17
Что это может быть с компьютером?





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