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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: лень писать, хочу метод переворота байтов в переменной.  (Прочитано 13356 раз)
soulsaver
Гость
« : Январь 17, 2012, 10:24 »

Есть ли что нить такое в qt? типо хлоп и число int i;  которое равно 3 и в шеснадцатиричном виде выглядит так 00 00 00 03, превращается вот в это 03 00 00 00. жизню бы проще на много щас сделало мне. Мечта - функция в качестве аргумента принимает инт, а возвращает его же, но перевернутый ))). Спасибо биг заранее.
« Последнее редактирование: Январь 17, 2012, 10:32 от soulsaver » Записан
Bepec
Гость
« Ответ #1 : Январь 17, 2012, 10:32 »

Лень отвечать, хочу петушка на палочке и стакан холодного сока.
Записан
soulsaver
Гость
« Ответ #2 : Январь 17, 2012, 10:33 »

а где-то еще есть питухи на палках? я думал они в сссре остались). ну а если честно, можешь что нить подсказать?
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #3 : Январь 17, 2012, 10:48 »

qToBigEndian, qToLittleEndian
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #4 : Январь 17, 2012, 10:54 »

а где-то еще есть питухи на палках? я думал они в сссре остались).

офф. у нас в супермаркетах "Сота" продаются. сам периодически балуюсь.
Записан
soulsaver
Гость
« Ответ #5 : Январь 17, 2012, 10:58 »

qToBigEndian, qToLittleEndian
есть контакт. легко и просто. класс. спасибо большое, опять выручил меня. Большое человеческое спасибо, теперь мона работать и радоваться)
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #6 : Январь 17, 2012, 11:34 »

если ты пишешь данные в QDataStream, то ему просто надо выставить setEndianess(QDataStream::LittleEndian) и все преобразования будут выполняться автоматически
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
soulsaver
Гость
« Ответ #7 : Январь 17, 2012, 11:44 »

если ты пишешь данные в QDataStream, то ему просто надо выставить setEndianess(QDataStream::LittleEndian) и все преобразования будут выполняться автоматически
тоже кул совет). кому нить понадобится, уверен. Но тот мозг который делал структуру dbf3 перевернул все байты в заголовках а имена полей и значения записей нормально вкорячил. и еще некоторые значения там не перевернутые есть, лучше функцией в цикле писать), ну по крайней мере именно в этом случае и именно по моему мнению)). но все равно спасибо, хорошая штука тоже, уверен.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #8 : Январь 17, 2012, 11:55 »

QDBFRedactor - посмотри, может что-то полезное найдешь. Это я когда-то по работе писал.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Akon
Гость
« Ответ #9 : Январь 17, 2012, 13:08 »

std::reverse<>()
Записан
soulsaver
Гость
« Ответ #10 : Январь 17, 2012, 14:34 »

QDBFRedactor - посмотри, может что-то полезное найдешь. Это я когда-то по работе писал.
спасибо )) поглядим). бедняга, тебя полноценный редактор заставили стряпать.. ) мне только выборку и запись по статическому запросу), но все равно общего много. респект тебе.)
Записан
soulsaver
Гость
« Ответ #11 : Январь 17, 2012, 14:37 »

std::reverse<>()
пасип) и это потестим). правда тут лишний заголовочный придется подключать). но если вдруг писать консольную прогу как раз кстати будет.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #12 : Январь 17, 2012, 14:37 »

спасибо )) поглядим). бедняга, тебя полноценный редактор заставили стряпать.. ) мне только выборку и запись по статическому запросу), но все равно общего много. респект тебе.)
Не заставляли - сам сделал. Просто нет нормальных кроссплатформенных свободных редакторов DBF. Жаль, что так и не закончил.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
soulsaver
Гость
« Ответ #13 : Январь 17, 2012, 14:50 »

сори что в этой же теме.. но у меня походу мозг уже не пашет, короче перевернутое 32х битное int число считываю побайтно и склеиваю его с помощью оператора смещения(dbfInfo это QByteArray):
Код
C++ (Qt)
dbfRecordsNumb = dbfInfo.at(4) + (dbfInfo.at(5) << 8) + (dbfInfo.at(6) << 16) + (dbfInfo.at(7) << 24);
 
все пучком пашет. считываю 16ти битное int число (тоже перевертыш):
Код
C++ (Qt)
dbfHeaderSize=dbfInfo.at(8)+ (dbfInfo.at(9)<< 8);
 
получаю какой-то бред, даже не могу понять откуда он это берет.... то что в этих индексах массива байтов лежат именно те байты которые мне нужны я уверен, проверил раз 700.))) уверен что-то глупое является причиной, только не могу этого увидить, сори за растерянность заранее(.
« Последнее редактирование: Январь 17, 2012, 15:04 от soulsaver » Записан
soulsaver
Гость
« Ответ #14 : Январь 17, 2012, 16:22 »

ужас)). короче исходные байты 81 00, после переворота показанного выше должно получиться 00 81, но получается FF FF FF 81... причем если я даже записываю в файл байт:
Код:
QDataStream<<dbfInfo.at(8);
(в нем находится значение 81) записывается не 81, и даже не FF 81 а FF FF FF 81.... это значит хватит работать? у меня параноя? или я нашел баг Qt? или я действительно что-то упускаю, ну оооочень жирное!!
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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