我在python中编写了一个简单的脚本,它将十六进制值重写为十进制 32位带符号的对应物。
data = [data.rstrip('\n') for data in open('dlzkyHEAD.txt')]
for value in data:
print(value, end=' -> ')
x= int(value,16)
print(x) if x<2**31 else x-2**32
在python shell中工作时一切正常,但当我将它们写入一个文件并在windows cmd中执行时,它不会打印负值。
Python shell输出:
8049008 -> 134516744
80490c0 -> 134516928
80490d0 -> 134516944
80490d8 -> 134516952
8049d84 -> 134520196
8049d88 -> 134520200
8049da4 -> 134520228
c -> 12
ffffefe8 -> -4120
ffffffe0 -> -32
ffffffe4 -> -28
ffffffe8 -> -24
ffffffec -> -20
fffffff0 -> -16
fffffff4 -> -12
fffffffc -> -4
cmd输出:
8049d88 -> 134520200
8049da4 -> 134520228
c -> 12
ffffefe8 -> ffffffe0 -> ffffffe4 -> ffffffe8 -> ffffffec -> fffffff0 -> fffffff4 -> fffffffc ->
答案 0 :(得分:1)
正如我们(感谢@ cricket_007在评论中指出的,此行只会在x&lt; 2 ** 31:
时打印print(x if x<2**31 else x-2**32)
print(x) if x<2**31 else print(x-2**32)
您也有兴趣在执行其他操作时进行打印:
if x<2**31:
print(x)
else:
print(x-2**32)
或者
SHOW PROCEDURE STATUS WHERE Db = DATABASE();