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

时间:2015-10-04 22:00:06

标签: python binary hex decimal

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

  

0变为0000,

     

65.5变为0041

     

200变为00c8

     

-200变为ff37

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

1 个答案:

答案 0 :(得分:1)

你的例子是错的。使用WHERE parts.category_id = 20 AND stocks.manufacturer_id = 4 AND feature_titles.title = ('Title One', 'Title Two') AND features.value IN ('0.1', '1', '200') ,您实际上是指SELECT "stocks".* FROM "stocks" INNER JOIN "parts" ON "parts"."id" = "stocks"."part_id" INNER JOIN "features" ON "features"."part_id" = "parts"."id" INNER JOIN "feature_titles" ON "feature_titles"."id" = "features"."feature_title_id" WHERE "parts"."category_id" = 20 AND "stocks"."manufacturer_id" = 4 AND ((feature_titles.title = 'Title One' AND (features.value = '0.1' OR features.value = '1')) OR (feature_titles.title = 'Title Two' AND (features.value = '200')) ,这会导致6.5565变为0x41,而不是20,因为那将是0x140xc8的一个补充是200而非0x200xeb

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

<强> 16位:

0xFF

<强> 8位:

0xFFFF