Я получил короткое значение (которое может быть ограничено UINT8
) и хотите назначить его UINT8
(/unsigned char
).
Но я думал, что нет лучшего выбора, кроме как сделать это:
unlatch.FaultBits.Value[0] = ui->lineEditFaultBits->text().toShort();
Но может ли это добиться того, чего я хочу, когда я использую unlatch.FaultBits.Value[0]
?
(Vaule [] — это массив в структуре: UINT8 Value[64];
)
Может ли это достичь того, что вы хотите? Ну, я могу предположить один из четырех путей, потому что вы не сказали нам точно, что вы хотите (ворчание).
short
значение для uint8_t
без преобразования в подпись в без знака. В этом случае вы должны быть уверены, что старое значение находится в диапазоне uint8_t
: assert(old_value >= 0 && old_value <= 255);
, Если этот пункт описывает поведение, которое вы хотите, и это утверждение не выполняется, то нет, ваш код не делает то, что вы хотите.short
значение для uint8_t
и вы не видите проблемы с процессом сокращения R, описанным в его комментарии. Если этот пункт описывает поведение, которое вы хотите, то да, ваш код делает то, что вы хотите.short
значение для uint8_t
и процесс сокращения R, описанный в его комментарии, не работает для вас, но вы готовы выразить свой собственный алгоритм сокращения в своем коде. Если этот пункт описывает желаемое вами поведение, то нет, вы не указали свой собственный алгоритм сокращения.short
значение для uint8_t
и вы не хотите, чтобы значение было уменьшено. В этом случае, uint8_t
не подходит Выберите другой тип.Других решений пока нет …