Моя программа C принимает случайное значение int high и преобразует его в шестнадцатеричный код и записывает его в файл. Все идет хорошо, если значение 225919 или менее например. 225875 является 00 03 72 53
но если значение превышает 225919 он начинает писать дополнительные ffffff
для последнего байта в примере шестнадцатеричного значения 885943 является 00 03 72 ffffff97
, в то время как правильное значение было бы 00 03 72 97
.Преобразование int to hex не подходит для высоких значений 225943 преобразуется в 0x000372ffffff97
код, который записывает значение в файл выглядит следующим образом:
char *temp = NULL;
int cze = 225943;
temp = (char *)(&cze);
for (ii = 3; ii >= 0; ii--) {
printf(" %02x ", temp[ii]); //just for printing the values
fprintf(in, "%02x", temp[ii]);
}
Выход: 00 03 72 ffffff97
Ожидаемый результат: 00 03 72 97
Пожалуйста, помогите, любой указатель ценится.
Как раз в качестве стиля, определяющего «temp» со значением «NULL», то (почти) сразу присваивая ему новое значение, это пустая трата времени. Просто определите его, где он впервые получил значимое значение: 'char * temp = (char *) &cze;'. –