Здравствуйте, гость ( Вход | Регистрация )
Litkevich Yuriy | Дата 30.10.2009, 23:29 |
Для проверки можно так сделать:
|
|
SABROG | Дата 30.10.2009, 22:22 |
Тип long вообще не одноразмерный, он может быть 32 бита и больше. Это не допустимо в сериализации данных, где нужно знать точные размеры. Иначе придется еще к каждому числовому типу дополнительный байт размера приписывать. Вылет происходит уже после загрузки 64 битного числа из потока в ulong? Проверь значения до записи в поток и после получения. Может быть число что-то теряет при приведении типа. |
|
BRE | Дата 30.10.2009, 22:21 |
На разных платформах long может иметь разный размер. На 32 битной - 4 байта, на 64 битной - 8 байт. Поэтому лучше использовать переменные с заданной размерностью (quint32/quint64). Посмотри размер твоего unsigned long. qDebug() << sizeof( unsigned long ); Или использовать raw-data: int QDataStream::writeRawData ( const char * s, int len ) int QDataStream::readRawData ( char * s, int len )
|
|
Авварон | Дата 30.10.2009, 22:18 |
а если unsigned long long? Пробовал явно приводить
но тогда программа вылетает... Менять тип переменной number нежелательно. А никак нельзя записать "чистый" unsigned long?
//Mac Os 10.6, qt 4.5 |
|
vanvo | Дата 30.10.2009, 21:41 |
а если unsigned long long? Пробовал явно приводить
но тогда программа вылетает... Менять тип переменной number нежелательно. А никак нельзя записать "чистый" unsigned long? |
|
Litkevich Yuriy | Дата 30.10.2009, 21:32 |
а если unsigned long long?
|
|
vanvo | Дата 30.10.2009, 21:24 |
Вопрос наверняка жутко глупый, но не получается корректно записать, а затем считать числа.
Оператор << с ulong'ом не работает, а явное приведение типа к поддерживаемым приводит к вылетанию программы. |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 29.3.2024, 10:58 |