![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| JohnnySE |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 9.8.2006 Репутация: нет Всего: нет |
начало файла: FF FF FF 7F
как получить такой вид: 0x7fffffff |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 15 Всего: 98 |
а чем не устраивает такой:
0xffffff7f вид? P.S. чтобы получить вышеукзанный вид все байты развернуть -- первый на место последнего (и наоборот), второй на место третьего (инаоборот) -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Открываешь файл через TFileStream.
Делаешь ReadInteger - получаешь число в правильном порядке. |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Для архитектуры Intel байты данных в памяти и файле хранятся в порядке обратном тому кототорый мы используем при записи на бумаге или при наборе в текстовом редакторе. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Именно поэтому нужно читать не побайтово, а блоком, чтобы данные встали на соответствующее место в памяти.
Через ReadInteger читаем сразу четырёхбайтовое значение и оно корректно ложится в память на свои 4 байта. |
|||
|
||||
| JohnnySE |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 9.8.2006 Репутация: нет Всего: нет |
Я наверно не правильно задал вопрос.
В файл я выгрузил данные для себя и для сравнения.
читаю MemStreamOut.ReadBuffer(fileheader, sizeof(fileheader)); и вижу что fileheader.start_sig = (255,255,255,127); а мне надо получить 7fffffff, как? Это сообщение отредактировал(а) Girder - 29.8.2006, 14:44 |
|||
|
||||
| Yanis |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: 72 Всего: 111 |
JohnnySE
А почему бы в структуре не заменить array[0..3]of byte на Integer? |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
JohnnySE, а покажи как загружал?
этот массив как инициализировал? -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| Yanis |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: 72 Всего: 111 |
JohnnySE
Конечно, если нужны извращения, то можно и так твой массив перевести:
|
|||
|
||||
| JohnnySE |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 9.8.2006 Репутация: нет Всего: нет |
Если меняю на integer, то в массив попадает
2147483647,512,1,0 А если byte то 255,255,255,127 потом можно сделать так цикл HStr:= HStr+IntToHex(fileheader.start_sig[i],2); и получаем то что надо Спасибо Всем |
|||
|
||||
| Yanis |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: 72 Всего: 111 |
Мой вариант на пару суток быстрее! |
|||
|
||||
| JohnnySE |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 9.8.2006 Репутация: нет Всего: нет |
вот просил помочь, а Вы извращения... http://forum.vingrad.ru/index.php?showtopic=107533 Заголовок файла { DWORD sig; // всегда 0x7fffffff DWORD sig2; // всегда 0x00000200 DWORD blocks_num; // похоже на количество блоков, но не всегда // поэтому расчитываем количество блоков сами DWORD reserved; }; Заголовок элемента { char EOL[2]; char data_len[8]; // размер данных в HEX как строка! char space1; char page_len[8]; // размер страницы в HEX как строка! char space2; char next_item_addr[8]; // указатель на следующую страницу // текущего блока в HEX как строка. // Если последняя страница, то 0x7fffffff char space3; char EOL_2[2]; }; Cсылка на блок описания метаданных { DWORD block_header_addr; // адрес заголовка DWORD block_data_addr; // адрес данных DWORD fffffff; // должно быть равно 0x7fffffff. Если // нет, то блоки ссылок закончились }; |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |