python 负数转换成16进制

python 负数转换16进制

import struct

print(str(struct.pack("i",-15))[4:6])
print(hex(16**7 -15)[-2:])
print(hex(-15))
print()
print(str(struct.pack("i",-263))[4:6])
print(hex(16**7 -263)[-2:])
print(hex(-263))
print()
print(str(struct.pack("i",-10008))[4:6])
print(hex(16**7 -10008)[-2:])
print()

以下为输出结果:

f1
f1
-0xf

f9
f9
-0x107

e8
e8

再试一组:

print(str(struct.pack("i", -463))[4:6])
print(hex(16**7 - 463)[-2:])

输出结果:

xf
31

通过计算器查询16进制-463可知hex(16**7 - 463)可以得出正确结果

。。。

前两天又看了公司一位老人用c++算十六进制的代码,大意是 (假定x为正数):y= x % 256, 然后256 - y(若x为负数是256+y),然后在对结果进行十六进制转换

我又在python里面试了一下

a = -99999
b = a % 256
print(b)
print(hex(b))


结果为:

97
0x61

python在对负数取余数的时候直接加上256了,所以也就更加简单了。



你可能感兴趣的:(python)