Преобразование типов в Си делается так:
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 и наоборот).