你可以这样做:
unsigned long value = strtoul("DFF7DF", NULL, 16);
value >>= 4; // discard first four bits
printf("Minus sign: %s\n", value & 1 ? "yes" : "no");
printf("Value: %lu\n", (value & 0x1FFF) >> 1);
long newvalue = (value & 1 ? -1 : 1) * ((value & 0x1FFF) >> 1);
Run Code Online (Sandbox Code Playgroud)