|
binyan
Пользователь
Откуда: Israel Регистрация: Март 2005
Всего: 292 сообщения
|
Когда переводим все мапы в текстовые файлы, флаги всех объектов на мапе пишутся в одном длинном числе. Как мне получить значения каждого флага по отдельности из текстового файла?
----- ...выражая озадаченность, граничащую с озабоченностью..
|
Отправлено: 22:33 - 13 Авг., 2006
|
|
Wasteland Ghost
Маленькое Злое Привидение
Откуда: Россия, Самара Регистрация: Дек. 2002
Всего: 2251 сообщение
|
Перевести его в шестнадцатеричный формат, например, с помощью виндового калькулятора. Затем влезть в доку по протофайлам и смотреть там что и где находится.
|
Отправлено: 8:55 - 14 Авг., 2006
|
|
binyan
Пользователь
Откуда: Israel Регистрация: Март 2005
Всего: 292 сообщения
|
Ок, тогда селдующий вопрос. Как в Сишке перевести число в 16-ричный формат?
----- ...выражая озадаченность, граничащую с озабоченностью..
|
Отправлено: 22:23 - 14 Авг., 2006
|
|
Ray
Модератор
Откуда: Донецк,Украина Регистрация: Янв. 2004
Всего: 746 сообщений
|
Если на ночь глядя ничего не путаю - то так: int pAddress =16777216; //чего-то там..... // ... ... (void*)pAddress; printf("%x",pAddress);
----- Не бывает невозможных задач – бывает мало времени.
|
Отправлено: 23:56 - 14 Авг., 2006
|
|
Wasteland Ghost
Маленькое Злое Привидение
Откуда: Россия, Самара Регистрация: Дек. 2002
Всего: 2251 сообщение
|
int PID = 16777216; printf("%x", PID); :D
|
Отправлено: 10:46 - 15 Авг., 2006
|
|
Anchorite
Пользователь
Откуда: Не здесь Регистрация: Янв. 2003
Всего: 283 сообщения
|
А адрес-то от PID зачем брать? И помоему лучше будет так
Код:
int PID = 16777216; printf("0x%08X", PID)
|
Отправлено: 11:17 - 15 Авг., 2006
|
|
Wasteland Ghost
Маленькое Злое Привидение
Откуда: Россия, Самара Регистрация: Дек. 2002
Всего: 2251 сообщение
|
Я же говорю: :D. Привычка, блин, в шестнадцатеричном формате именно адреса выводить :D.
|
Отправлено: 19:46 - 15 Авг., 2006
|
|
Ray
Модератор
Откуда: Донецк,Украина Регистрация: Янв. 2004
Всего: 746 сообщений
|
Lol Народ, я ж всего лишь на вопрос отвечал. Вот и привёл кусок из своего кода PID'ы там ни причём, просто способ перевода
----- Не бывает невозможных задач – бывает мало времени.
|
Отправлено: 22:23 - 15 Авг., 2006
|
|
binyan
Пользователь
Откуда: Israel Регистрация: Март 2005
Всего: 292 сообщения
|
Ок, это вывод на экран... А как придать переменной значение этого числа в 16-ричном формате. Опережая ответ, ещё один вопрос. Как получить какое то определённое место в числе 16-ричного формата. Например есть 0х002d542. как мне узнать что находится на 4-ой позиции (d) ?
----- ...выражая озадаченность, граничащую с озабоченностью..
|
Отправлено: 21:38 - 17 Авг., 2006
|
|
Ray
Модератор
Откуда: Донецк,Украина Регистрация: Янв. 2004
Всего: 746 сообщений
|
Я ж строки с комментариями не от понта приводил... Ок, ещё раз. Смотри: int pAddress =16777216; //чего-то там..... ReadProcessMemory(hNewProcess, (void*)pAddress, &movei, 4, NULL); printf("%x",pAddress); Таким образом в ф-ию чтения памяти передаётся целое число как 16-ое. Ну а если ещё проще, то так мо;но: int pAddress =16777216; //что надо перевести void* temp; //что получить temp = (void*) pAddress; //а дальше что угодно, типа printf("%x",temp); printf("%d",temp); //первое будет //0x1000000 //второе //16777216
----- Не бывает невозможных задач – бывает мало времени.
|
Отправлено: 22:56 - 17 Авг., 2006 | ИСПРАВЛЕНО: Ray - 21:59 - 17 Авг., 2006
|
|
Wasteland Ghost
Маленькое Злое Привидение
Откуда: Россия, Самара Регистрация: Дек. 2002
Всего: 2251 сообщение
|
Ray, не заморачивай человека так сильно . binyan, так и записывай: 0x и дальше число. Например, int PID = 0x01000001; На второй вопрос: int flag4 = (PID & 0x0000F000) >> 12; 0x0000F000 - это "маска", где нужные тебе биты "забиты" единицами, а ненужные - нулями. >> - операция побитового сдвига. PS Ты, часом, не анализатор PID делаешь? Есть же... PPS И ввообще, люди, пользуйтесь преимуществами С++, а... cout >> hex >> PID; :D
|
Отправлено: 17:12 - 18 Авг., 2006
|
|
binyan
Пользователь
Откуда: Israel Регистрация: Март 2005
Всего: 292 сообщения
|
Цитата: int flag4 = (PID & 0x0000F000) >> 12;
А почему 12?
Цитата: Ты, часом, не анализатор PID делаешь?
Нет. Я пытаюсь мапы в sql записать
----- ...выражая озадаченность, граничащую с озабоченностью..
|
Отправлено: 21:34 - 20 Авг., 2006
|
|
Wasteland Ghost
Маленькое Злое Привидение
Откуда: Россия, Самара Регистрация: Дек. 2002
Всего: 2251 сообщение
|
Цитата: А почему 12?
Биты посчитай .
|
Отправлено: 21:51 - 20 Авг., 2006
|
|
binyan
Пользователь
Откуда: Israel Регистрация: Март 2005
Всего: 292 сообщения
|
Ладно...сдаюсь...камрады, помогайте. Кто нибудь когда нибудь разбирался с форматом мапов переведенных в тхт? Кто нибудь может мне обяснить что значат все эти циферки перед началом блоков [OBJECT] ? Как оно там вообще построенно то все?
----- ...выражая озадаченность, граничащую с озабоченностью..
|
Отправлено: 21:04 - 22 Авг., 2006
|
|
Wasteland Ghost
Маленькое Злое Привидение
Откуда: Россия, Самара Регистрация: Дек. 2002
Всего: 2251 сообщение
|
Открываешь доку по прошникам и видишь там всё те же параметры. Если предмет -- контейнер с вещами внутри, то к нему "пристёгивается" ещё и список этих вещей (объектов). Есть там, правда, ещё и параметры, специфичные именно для объектов на мап-файлах. По именам о них кое-что ясно, но только кое-что. ЗЫ При сохранении в тхт маппер теряет информацию о некоторых флагах misc-объектов. Каких -- не помню, Anchorite об этом говорил.
|
Отправлено: 10:00 - 23 Авг., 2006
|
|
Anchorite
Пользователь
Откуда: Не здесь Регистрация: Янв. 2003
Всего: 283 сообщения
|
Вроде по Exit Grid-ам и Ladderam.
|
Отправлено: 20:20 - 23 Авг., 2006
|
|
|
|