如何從無符號字符檢索負值。從無符號字符(Little Endian)中檢索正或負n位
說我有無符號的字符,我通過了樂趣,只是想獲得第一個6位。現在這些6位可以具有從其他函數填充的正值或負值。我想提取相同的價值。 我可以使用0x3F成功提取正值。但是,怎麼樣,如果它有負值例如
signed char my_6bitfunc( unsigned char *val)
{
unsigned char temp = *val & 0x3F;
return temp;
}
// somewhere in main
int main()
{
signed char valneg = -31 ;
signed char valpos = 31 ;
signed char a = my_6bitfunc(&valneg);
signed char b = my_6bitfunc(&valpos);
printf(" val neg %d\n", a); // not -31 but 33 ?
printf(" val positive %d\n", b);
}
O/P
預期值的-31 =實際值= 33,爲什麼?錯誤
b = 31的預期值實際值= 31正確。
在'my_6bitfunc'爲什麼''temp' unsigned'? – MotKohn
@ MotKohn,即使簽名也沒有什麼區別。我正在返回簽名字符。我認爲我在這裏看到的是額外的操作像xor或類似的東西給我預期的價值,但沒有線索添加 – samprat
如果函數調用-75時,你想要什麼結果? – 4386427