![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
И снова...и опять HEX [D7, XP]
MOO © (2008-01-05 22:42:00)Воопсчем так, загружаю я фалег с помощью потока TFileStream и с помощью него читаю определенный блок байтов например: " 00 00 00 D465 7F"
Я читаю выделенные четыре байта, но выходит так, что он их переворачивает и они становятся вида: " D4 00 00 00"
Может я что то неправильно делаю, но видел HEX редактор сделанный на DElphi там точно также. Есть какой-нибудь другой способ уже готовый или всё таки самому писать свою функцию?
{RASkov} (2008-01-06 00:24:00) [21]> [34] MOO (06.01.08 00:23)
> Еще какаие предложения
Делай как знаешь....
Ты толком не можешь объяснить, что хочешь.... к советом прислушиваться не хочешь....
Какие могут быть предложения???
:)
palva (2008-01-06 00:24:00) [22]А потом в цикле каждый байт переводи в Hex Хлопотно, но надежно.
DVM (2008-01-06 00:24:00) [23]
> Я хочу сразу считать правильно)
Для того чтобы правильно считать, надо правильно туда положить.
MOO (2008-01-06 00:23:00) [24]
> DVM
Я хочу сразу считать правильно)
> {RASkov} © (06.01.08 00:20) [33]
Еще какаие предложения
{RASkov} (2008-01-06 00:20:00) [25]> [31] MOO (06.01.08 00:20)
Читай побайтово...
DVM (2008-01-06 00:20:00) [26]
> Хочу вернуть в обратное первоначальное положение соответственно
писать правильно сразу в файл не пробовал?
MOO (2008-01-06 00:20:00) [27]Хорошо хочу получить HEX в начально расположении
MOO (2008-01-06 00:18:00) [28]Хочу вернуть в обратное первоначальное положение соответственно
DVM (2008-01-06 00:18:00) [29]
> MOO
ты скажи что ты хочешь в результате получить?
Германн (2008-01-06 00:17:00) [30]
> Если я спрошу как этого избежать то ты ответишь я полагаю,
> что делать не в integer? )
Нет. Просто запомни раз и навсегда, что в памяти байты целого числа расположены не так как они написаны на бумаге.
DVM (2008-01-06 00:17:00) [31]
> Если я спрошу как этого избежать то ты ответишь я полагаю,
> что делать не в integer? )
дело не в самом integer, а в том как ты в этот integer помещаешь байты и как потом пытаешься смотреть.
{RASkov} (2008-01-06 00:16:00) [32]> [23] MOO (06.01.08 00:11)
> > edit1.Text:=IntToHex(BM, 8);
>
> Зачем 8
А затем, что бы отобразить 4 байтовый интегер в хекс представлении правильно.....
> Если я спрошу как этого избежать то ты ответишь я полагаю,
> что делать не в integer? )
Что в итоге хочешь добится?
palva (2008-01-06 00:15:00) [33]> Если я спрошу как этого избежать
Этого не надо избегать. Машина делает не то что вы хотите, а то что вы ей скомандовали. Надо чтобы первое совпадало со вторым.
DVM (2008-01-06 00:13:00) [34]
> Почему вы думаете, что IntToHex даст вам байты в том же
> порядке, в каком они лежат в памяти?
я об этом же
MOO (2008-01-06 00:11:00) [35]
> edit1.Text:=IntToHex(BM, 8);
Зачем 8
> если таким макаром в integer считать файл 00 00 00 01, то
> в integer будет 1000000
Если я спрошу как этого избежать то ты ответишь я полагаю, что делать не в integer? )
palva (2008-01-06 00:10:00) [36]Откуда вы взяли что переворачивает, если читаете в Integer? Вы байты читаете или четырехбайтовые целые? Почему вы думаете, что IntToHex даст вам байты в том же порядке, в каком они лежат в памяти?
DVM (2008-01-06 00:09:00) [37]
> {RASkov} © (06.01.08 00:07) [20]
да в данном примере дело вообще не в файле, а в том КУДА он все это читает.
{RASkov} (2008-01-06 00:07:00) [38]И в данном примере, файл должен быть не менее 24 байт, иначе все коту под хвост)
DVM (2008-01-06 00:06:00) [39]
> MOO
ты бы сразу и говорил, что в integer читаешь, а то байты переварачиваются.
все нормально
если таким макаром в integer считать файл 00 00 00 01, то в integer будет 1000000
{RASkov} (2008-01-06 00:05:00) [40]Да, и на всякий случай, хотя думаю, что сам знаешь и это был только "кусок проблемного кода", но....
Утечки нам не нужны, т.е. Fs.Free; незабываем делать.... и желательно в блоке finally