Беззнаковые байты в QByteArray |
Здравствуйте, гость ( Вход | Регистрация )
Беззнаковые байты в QByteArray |
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:05
Сообщение
#3
|
Студент Группа: Участник Сообщений: 69 Регистрация: 27.10.2009 Пользователь №: 1183 Спасибо сказали: 1 раз(а) Репутация: 0 |
Хм. и правда работает. а я пробовал Не получалось. а почему? |
|
|
Алексей1153 |
10.10.2010, 15:48
Сообщение
#4
|
фрилансер Группа: Участник Сообщений: 2939 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
|
|
|
BRE |
10.10.2010, 17:43
Сообщение
#5
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
|
|
|
Алексей1153 |
10.10.2010, 18:56
Сообщение
#6
|
фрилансер Группа: Участник Сообщений: 2939 Регистрация: 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
|
фрилансер Группа: Участник Сообщений: 2939 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
да я понимаю, откуда минус берётся:
129 == 0x81 если это char , то при увеличении размерности знак (0x80) тоже расширяется и получается 0xFFFFFF81 , что и есть 4294967169 а всё остальное - это лишь представление мне другое дико - если работаешь с байтом, зачем там char, а не unsigned char. Отсюда и глюки. 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, 19:21
Сообщение
#10
|
фрилансер Группа: Участник Сообщений: 2939 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
|
|
|
Текстовая версия | Сейчас: 24.4.2024, 14:08 |