Форум: "Начинающим";
Текущий архив: 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