Задать вопрос
@Bergis

Как перевести int в unsigned int?

Мне нужно перевести число -103 в unsigned int , как можно это сделать ? Уже перепробовал много скриптов , но выдает ошибки ...
  • Вопрос задан
  • 3229 просмотров
Подписаться 2 Простой 6 комментариев
Решения вопроса 1
@res2001
Developer, ex-admin
Преобразование типов в Си делается так:
int a = -103;
unsigned int b = (unsigned int)a;

Но надо понимать, что unsigned типы - это беззнаковые, т.е. unsigned int переменная может принимать значение от 0 до 4294967295, т.е. значение -103 в вашем случае не входит в область допустимых значений типа unsigned int.
Когда вы делаете преобразование знаковых типов в беззнаковые вы должны четко понимать к чему это приведет.
В двоичном представлении переменная a из моего примера принимает значение: 0xFFFFFF99
Переменная b в двоичном представлении примет это же значение (0xFFFFFF99), но интерпретироваться оно будет уже как 4294967193.
Обычно когда нужно преобразование знаковых в беззнаковые числа вы перед этим должны убедиться, что знаковое число строго >=0 и только потом преобразовывать. Отрицательные значения должны обрабатываться по другому.
Хотя, конечно, могут быть и другие задачи, где не требуется отсекать отрицательные числа, а имеет значение только двоичное представление числа (например такой подход применяется при преобразовании порядка байт из little endian в big endian и наоборот).
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы