我需要在python中弄清楚如何使用1的补码为负值将带符号的十进制转换为十六进制。我需要得到的示例结果如下:
0变为0000,
65.5变为0041
200变为00c8
-200变为ff37
我可以使用hex()轻松获得正数,但是如何进行转换以获得负数的正确值?
答案 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.55
。 65
变为0x41
,而不是20
,因为那将是0x14
。
0xc8
的一个补充是200
而非0x20
或0xeb
。
要计算一个补语,您可以使用XOR-operator。使用0x37
或0xff37
,具体取决于预期数据的位深度。
<强> 16位:强>
0xFF
<强> 8位:强>
0xFFFF