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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вопрос про зипись в переменную 
:(
    Опции темы
yngwie19
Дата 14.2.2009, 19:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Всем привет, у меня вопрос:
Код

short dwBuf[2];
dwBuf[0] = 10;

Допустим мы записываем в переменную dwBuf[0] число 10, если посмотреть в hex, то в это значение занимает всего один байт в памяти, второй байт 00. Правильно Я понимаю, что если бы число было намного больше, то оно занимало бы уже больше места? А так получается, что второй байт этой переменной используется  "вхолостую"

Это сообщение отредактировал(а) yngwie19 - 14.2.2009, 19:16
PM MAIL   Вверх
Kallikanzarid
Дата 14.2.2009, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Ну да, в short-е под число отведено 16 бит, число 10 занимает четыре. Эрго, остальные - незначащие нули.
PM MAIL   Вверх
yngwie19
Дата 14.2.2009, 21:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Kallikanzarid, понятно. Тогда такой пример:
Код

short dwBuf[10];
short dwTemp[10];
    DWORD dwSizeRead = 0;

    for(int x = 0; x<10; x++)
        dwBuf[x] = x;

    HANDLE hFile = CreateFile("C:\\1.dat",GENERIC_READ | GENERIC_WRITE,0,NULL,CREATE_ALWAYS,0,NULL);
    WriteFile(hFile,dwBuf,sizeof(short)*50,&dwSizeRead,NULL);
             
                HANDLE hFile2 = CreateFile("c:\\1.dat",GENERIC_READ | GENERIC_WHITE,0,NULL,OPEN_EXISTING,0,NULL);
                ReadFile(HANDLE hFile, LPVOID dwTemp, sizeof(short)*10, &dwCount,NULL);


Допустим есть массив nBuf[10], заполненный числами от 1 до 10, далее в файл 1.dat записываются значения этого массива после чего из этого файла данные считываются в массив dwTemp. 2 Вопроса по поводу этих действий:
1 Вопроc: при записи в файл, функция WriteFile записывает только байты со значениями или все подряд (включая 00) ?
2 Вопрос: при считывании из этого файла, функция ReadFile берет по 2 байта в каждый элемент массива nBuf ?  
PM MAIL   Вверх
mes
Дата 14.2.2009, 21:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



да, число в short (а также char/int/double/..) всегда занимает место равное sizeof (short) (char/int/double/..) соответственно, независмо от самого значения.
То есть для вашего случая : пишется/читается не значение, а все биты числа типа short.


P.S. только вот непонятно почму Вы 50 short'ов в примере записываете, хотя имеете только 10..

Это сообщение отредактировал(а) mes - 14.2.2009, 21:44


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


Опытный
**


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

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



mes, а ну это опечатка. Спасибо за ответ.
PM MAIL   Вверх
yngwie19
Дата 15.2.2009, 00:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



mes, скажи пожалйста.
1) При попытке открыть сформировавшийся файл 1.dat через блокнот, Я вижу лишь набор каких-то символов. Это принципиальная специфика записи по байтам в файл информации? как можно посмотреть какие значения находятся в данном файле?
2) Можно ли при создании нового файла использовать другое расширение отличное от dat и есть ли разница при использовании этого расширения и другого ? 
PM MAIL   Вверх
cutwater
Дата 15.2.2009, 01:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Если не против, отвечу я.
1) Блокнот открывает файл в текстовом режиме, при чем есть символы которые он не отображает, при чем открывает по всей видимости еще и в определенной кодировке ( у Вас же в файле не текст по сути а двоичные данные).
Посмотреть можно при помощи любого hex-редактора или far или lister в тотал коммандере или etc.

2) не влияет расширение файла никак. Назовите хоть exe, хоть avi. Разницы в зависимости от расширения нет.


--------------------
user posted image
PM MAIL   Вверх
GoldFinch
Дата 15.2.2009, 01:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

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



какой смысл программировать если не понимать таких основ %)
PM MAIL ICQ   Вверх
mes
Дата 15.2.2009, 01:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



если разберетесь с этим не сложным примером :
Код

for (signed char i='b'-'a'; i;++i) std::cout<<int(i)<<" "<<i<<" "<<unsigned(i)<<" "<<std::hex<<int(i) << std::dec<< std::endl;

и поймете как получается то, что видите на экране и откуда берется звук, то думаю без труда сами ответите на все Ваши вопросы этой темы.  smile 

П.С. обратите особое внимание на 7,8,9,10,13


Это сообщение отредактировал(а) mes - 15.2.2009, 01:46


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


Опытный
**


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

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



Цитата(cutwater @  15.2.2009,  01:12 Найти цитируемый пост)
Посмотреть можно при помощи любого hex-редактора или far или lister в тотал коммандере или etc.

а что-то в far вижу только байты в hex а сами цифры нет. Или вы это и имели в виду, что нужно просто перевести в dec?
PM MAIL   Вверх
Dem_max
Дата 15.2.2009, 09:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1780
Регистрация: 12.4.2007

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



Цитата

Или вы это и имели в виду, что нужно просто перевести в dec?


А как же, а вообще прочитать тут Системы_счисления


--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
yngwie19
Дата 15.2.2009, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Dem_max, а в far-е можно сразу в dec посмотреть?
PM MAIL   Вверх
cutwater
Дата 15.2.2009, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



В фаре не помню уже ибо им не пользуюсь при просмотре файла нужно нажать кнопку F4, там же так и подписано HEX
Или вам другое нужно?

Добавлено через 1 минуту и 8 секунд
И что значит в dec посмотреть? в десятичной с-ме счисления обычно такие программы не отображают данные, может быть есть такое в WinHex но не уверен.


--------------------
user posted image
PM MAIL   Вверх
yngwie19
Дата 15.2.2009, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



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

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

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

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

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


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

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


 




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


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

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