【发布时间】:2014-09-25 15:10:58
【问题描述】:
当我这样做时在 python 终端上:-
In [6]: 0xffffff85
Out[6]: 4294967173
In [9]: "%d" %(0xffffff85)
Out[9]: '4294967173'
我希望能够提供0xffffff85 并在python 中获得带符号的等效十进制数(在本例中为-123)。我怎么能这样做?
在 C 中,我可以这样做:-
int main() { int x = 0xffffff85; printf("%d\n", x); }
【问题讨论】:
-
如果不小于 2 的 (bitlength-1) 次方,则减去 2 的 bitlength 次方。简单。 (本例中的位长为 32)
-
int x = 0xffffff85; printf("%d\n", x);不是用于打印“-123”的可移植 C 代码。这取决于unsigned、int的位宽和底层int实现(是否是2 的补码。)C 代码是UB。