Цитата(toweroff @ Dec 20 2011, 21:48)

а не проще вот так?
Код
if (temp & 0x80) { // если отрицательное
да и %02u - вроде как тут нужно %03
d, одно место останется под знак, да и число будет выводиться как обычное десятичное знаковое, а не беззнаковое
Решил потестировать немного:
Код
unsigned char temp = 0x19;
char convert[16];
...
temp = temp - 0x28;
if (temp & 0x80) {
sprintf(convert,"-%03d",temp);
put_string(115,4,convert,0xF800,1);
}
else {
sprintf(convert,"%02d",temp);
put_string(115,4,convert,0xF800,1);
}
Если написать
unsigned char temp = 0x47, то выводится число 31, всё правильно (47hex - 28hex = 1F hex ->31dec)
Но если написать
unsigned char temp = 0x19, то выводится число -241, а не -15 (19hex - 25hex = FFFFFFFFFFFFFFF1 hex -> -15dec)
Всё равно не понимаю как минус вывести.
P.S. F1 hex = 241 dec
Сообщение отредактировал mr_smit - Dec 20 2011, 19:45