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了,所以也就更加简单了。