Russian Qt Forum

Qt => Общие вопросы => Тема начата: xk от Декабрь 10, 2007, 20:26



Название: Записать quint8 в файл ?
Отправлено: xk от Декабрь 10, 2007, 20:26
Доброго времени суток.
Не могу заставить этот маленький код работать как надо:
Код:
QFile fout("debug.log");
fout.open(QIODevice::WriteOnly);
QTextStream str(&fout);

quint8 a = 0x50;
quint8 b = 0x80;
quint8 c = 0x98;
//  str << a << b << c; - а в этом случае переменные преобразуются в строки.
str << (char)a << (char)b << (char)c;
fout.close();

Открываю файл 16-м редактором, а там: 0x50 0x80 0x3F  :o
Не догоняю почему так.. и как сделать так, чтобы записался таки мой байт 0x98 ?
Помогите пожалуйста, ум за разум уже заходит :-)


Название: Re: Записать quint8 в файл ?
Отправлено: Mikhail от Декабрь 10, 2007, 21:08
Доброго времени суток.
Не могу заставить этот маленький код работать как надо:
Код:
QFile fout("debug.log");
fout.open(QIODevice::WriteOnly);
QTextStream str(&fout);

quint8 a = 0x50;
quint8 b = 0x80;
quint8 c = 0x98;
//  str << a << b << c; - а в этом случае переменные преобразуются в строки.
str << (char)a << (char)b << (char)c;
fout.close();

Открываю файл 16-м редактором, а там: 0x50 0x80 0x3F  :o
Не догоняю почему так.. и как сделать так, чтобы записался таки мой байт 0x98 ?
Помогите пожалуйста, ум за разум уже заходит :-)

Попробуй использовать QDataStream вместо QTextStream.
Успехов.


Название: Re: Записать quint8 в файл ?
Отправлено: pastor от Декабрь 10, 2007, 21:16
А зачем к привоить к char?

Код:
str << (char)a << (char)b << (char)c;


0x98 = 152

имхо, переполнение типа char


Название: Re: Записать quint8 в файл ?
Отправлено: xk от Декабрь 10, 2007, 21:34
Спасибо.
QDataStream помог... просто мне надо было еще QByteArray в тот же файл писать, а QDataStream их машинонезависимо сериализует в операторах <<. Проблема решилась использованием QDataStream::writeRawData()