Russian Qt Forum
Сентябрь 22, 2024, 12:24 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как использовать memcpy  (Прочитано 8298 раз)
merke
Гость
« : Сентябрь 26, 2009, 19:38 »

Всем привет!
У меня есть вопрос, как использовать функцию memcpy. К примеру я имею байтовый массив мне нужно его преобразовать в тип quint16.
В общем делаю так:
На Visual Basic 6 я создаю пользовательский тип с тремя элементами каждый из которых имеет тип Integer, всё это дело я записываю в бинарный файл. Теперь на Кутищище я создаю в точ такую же структуру с теми же элементами с типами quint16 так как в VB тип Integer представляет собой  двухбайтовую переменую. Считываю я из бинарки мой пользовательский тип до этого перегрузив операторы << и >>. Теперь после считывания я получаю байтовое представление записанных чисел на бэйсике.
Хочу переписывать в байтовый массив и всё это дело конвертировать посредством memcpy Помню есть апишка CopyMemory. Думаю это тоже самое.
Привожу свой код.

Код:
void MainWindow::readStruct()
{
    mystr str1[10]; //Структура
    QFile file1("C:\\temp.dat");;
    file1.open(QIODevice::ReadOnly);
    QDataStream stre(&file1);
        stre >> str1[0];
        QByteArray mt;
        mt.setNum(str1[0].age, 10);
        quint16 num;
        memcpy(&num, mt, 2);
        qDebug() <<  num;

    }
        file1.close();
}
Ничего не получается, код то запускается, вот только результат далеко не похож на истинный.
Пожалуйста, помогите мне! Буду оченб благодарен!
« Последнее редактирование: Сентябрь 26, 2009, 19:41 от merke » Записан
Rcus
Гость
« Ответ #1 : Сентябрь 26, 2009, 19:54 »

/* \facepalm */
посмотрите что делает QByteArray::setNum Улыбающийся
Записан
SLiDER
Гость
« Ответ #2 : Сентябрь 26, 2009, 21:58 »

Блин, Visual Basic атакует  Грустный Я больше половины из того что вы говорите непонимаю, вот что например такое
Цитировать
байтовое представление записанных чисел
Может все таки почитать что-нибудь по C/C++, и вообще RTFM, эти языки весьма сильно отличаются от Visual Basic.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #3 : Сентябрь 27, 2009, 11:39 »

1) Никто не обещал что Васька будет писать в том же формате что и Qt

2) Никто не обещал что данные будут записаны в том же формате (и занимать столько же байт) что и в памяти. Это надо как минимум проверить (как и п. 1)

3) Незачем использовать memcpy если Вы уже используете tools высокого уровня (такие как QDataSrtream) которые уже дают результат чтения.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.124 секунд. Запросов: 23.