dhenry,
"Smart" is highly subjective.
agree

void setup() {
Serial.begin(115200);
Serial.println("signed 24bit test\n");
int32_t value[]={0x800000, 0xFFFFFF, 0x0, 0x000001, 0x7FFFFF};
// exp result -8.388.608, -1 , 0 , +1 , 8.388.607
for(int i=0; i<5; i++) {
Serial.print(value[i], HEX);
Serial.print("\t");
Serial.println(value[i], DEC);
}
Serial.print("___________________");
output:
signed 24bit test
800000 8388608 // expected -8.388.608
FFFFFF 16777215 // expected -1
0 0
1 1
7FFFFF 8388607
_________________
i', playing around with bit manipulation (shift, toggle, etc.) but
it always end up in requirement to use an IF condition.
"smart" would be without 'IF' but a straight conversion line ( or 2)
wally