Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
|
rcdimon |
10.10.2010, 13:54
Сообщение
#1
|
|
Студент ![]() Группа: Участник Сообщений: 69 Регистрация: 27.10.2009 Пользователь №: 1183 Спасибо сказали: 1 раз(а) Репутация: 0
|
Как получить свои 129?? |
|
|
|
|
BRE |
10.10.2010, 14:01
Сообщение
#2
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44
|
Цитата(rcdimon @ 10.10.2010, 14:54) Link Как получить свои 129?? |
|
|
|
|
rcdimon |
10.10.2010, 14:05
Сообщение
#3
|
|
Студент ![]() Группа: Участник Сообщений: 69 Регистрация: 27.10.2009 Пользователь №: 1183 Спасибо сказали: 1 раз(а) Репутация: 0
|
Хм. и правда работает. а я пробовал Не получалось. а почему? |
|
|
|
|
Алексей1153 |
10.10.2010, 15:48
Сообщение
#4
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2946 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34
|
Цитата(rcdimon @ 10.10.2010, 17:05) Link unsigned b = (uint)arr[0]; Не получалось. а почему? тоже должно было получиться |
|
|
|
|
BRE |
10.10.2010, 17:43
Сообщение
#5
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44
|
Цитата(Алексей1153 @ 10.10.2010, 16:48) Link тоже должно было получиться Не должно. |
|
|
|
|
Алексей1153 |
10.10.2010, 18:56
Сообщение
#6
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2946 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34
|
BRE, да, в отладчике зыркнул, расширяет знак
зато явное преобразование к незнаковому char работает unsigned b = (uchar)arr[0]; скорее всего корявая работа оператора [] , который возвращает не просто char , а QByteRef , я уж не стал дальше копать, что он там вертает (скорее всего int) ещё один довод в пользу использования STL |
|
|
|
|
BRE |
10.10.2010, 19:07
Сообщение
#7
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44
|
Дело вовсе не в QByteArray и не в STL.
Попробуй такой код, эффект будет таким же: Если преобразовать b к signed, то станет понятно, что число 4294967169 как раз обозначет -127. |
|
|
|
|
Алексей1153 |
10.10.2010, 19:12
Сообщение
#8
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2946 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34
|
да я понимаю, откуда минус берётся:
129 == 0x81 если это char , то при увеличении размерности знак (0x80) тоже расширяется и получается 0xFFFFFF81 , что и есть 4294967169 а всё остальное - это лишь представление мне другое дико - если работаешь с байтом, зачем там char, а не unsigned char. Отсюда и глюки. Цитата(BRE @ 10.10.2010, 22:07) Link std::vector<char> arr; вот это я бы написал сразу нормально std::vector<uchar> arr; |
|
|
|
|
BRE |
10.10.2010, 19:18
Сообщение
#9
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44
|
Цитата(Алексей1153 @ 10.10.2010, 20:12) Link вот это я бы написал сразу нормально std::vector<uchar> arr; А почему с uchar нормально, а с char нет? QByteArray в Qt часто используется как инструмент для работы с обычными сишными строками, поэтому и заточен для работы char. А так есть же и QVector<uchar>. |
|
|
|
|
Алексей1153 |
10.10.2010, 19:21
Сообщение
#10
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2946 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34
|
Цитата(BRE @ 10.10.2010, 22:18) Link А почему с uchar нормально, а с char нет? смотри самый первый пост этой темы. Вот почему |
|
|
|
![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 4.3.2026, 7:26 |