python中如何将十进制转换为1的补码十六进制

How to convert decimal to 1's complement hexadecimal in python

我需要弄清楚,在 python 中,如何使用负值的 1 补码将带符号的十进制转换为十六进制。我需要获得的示例结果如下:

0 becomes 0000,

65.5 becomes 0041

200 becomes 00c8

-200 becomes ff37

我可以使用 hex() 轻松获得正数,但是如何进行转换才能获得负数的正确值?

你的例子是错误的。使用 6.55 你实际上是指 65 导致 0x4120 变为 0x14,而不是 0xc8,因为那将是 2000x20 的补码是 0xeb 而不是 0x370xff37.

要计算补码,您可以使用 XOR-operator。使用 0xFF0xFFFF,具体取决于您预期数据的位深度。

16 位:

hex(0x14 ^ 0xFFFF) -> 0xffeb

0b0000000000010100 ^
0b1111111111111111
------------------
0b1111111111101011 -> 0xffeb

8 位:

hex(0x14 ^ 0xFF)   -> 0xeb