Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Распаковка чисел 
V
    Опции темы
Therion
Дата 21.10.2008, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 21.12.2003

Репутация: нет
Всего: нет



Имеется код:
Код

char fakeDate[] = {'4', '8', '6', '1'};
time_t fakeTime =  static_cast<time_t>(
                              static_cast<time_t>(fakeDate[3]) << 24 | 
                  static_cast<time_t>(fakeDate[2]) << 16 |
                  static_cast<time_t>(fakeDate[1]) << 8 | fakeDate[0]);

Помогите пожайлуста с обратным кодом. Нужно из time_t fakeTime сново получить числа 4, 8, 6, 1. И если имеется возможность то посовнтуйте хорошую литературу по побитовым операциям в C++. Заранее благодарен.
PM MAIL   Вверх
mes
Дата 21.10.2008, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



запихнуть 4 байта  массив можно посредством такой функции :
Код

char GetByte (unsigned long value, int index) // возвратит байт с порядковым номер index из длиного числа value
{
    return value>>(index<<3) & 0xff;
}

либо с помошью uniona
Код

union TimeTransform
{
char    Bytes[sizeof(time_t)];
time_t Time;
};
 ...

 TimeTransform t; 
 t.Time=4535325;
 for (int i=0  i!=sizeof (time_t); ++i) cout <<Bytes[i];












--------------------
PM MAIL WWW   Вверх
eyeofhell
Дата 21.10.2008, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Адепт
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 16.10.2008
Где: Россия, Москва

Репутация: 1
Всего: 1



Цитата

Помогите пожайлуста с обратным кодом. Нужно из time_t fakeTime сново получить числа 4, 8, 6, 1. И если имеется возможность то посовнтуйте хорошую литературу по побитовым операциям в C++. Заранее благодарен.


Код

time_t fakeTime = (time_t)0x01060804;
char fakeDate[ 4 ] = { 0 };
fakeDate[ 0 ] = fakeTime & 0xFF;
fakeDate[ 1 ] = (fakeTime >> 8) & 0xFF;
fakeDate[ 2 ] = (fakeTime >> 16) & 0xFF;
fakeDate[ 3 ] = (fakeTime >> 24) & 0xFF;


PM MAIL ICQ   Вверх
Therion
Дата 22.10.2008, 09:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 21.12.2003

Репутация: нет
Всего: нет



Большое спасибо smile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0436 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.