如何将此shell代码字符串转换为整数

时间:2017-04-20 10:57:34

标签: python

我正在开发信息安全课程,并且需要了解一些代码元素:

"\x66\x68\xb0\xef". # PORT

我的理解是这应该转换为整数值> 1024但我不知道如何计算。

我可以看到此字符串包含单独的HEX值,因此尝试打印由\ x分隔的相应HEX值并获取以下内容:

>> print (int('66',16))
102
>>> print (int('68',16))
104
>>> print (int('b0',16))
176
>>> print (int('ef',16))
239

显然这给了我四个独立的值,所以不是我需要的是一个整数值。我很感激你的一些指导。

2 个答案:

答案 0 :(得分:4)

struct是你的朋友。它将整数字节和字节打包成整数,如果这是一个大端表示,那么你应该这样做:

import struct
as_int = struct.unpack('>I', the_str)[0]

对于小端:

import struct
as_int = struct.unpack('<I', the_str)[0]

答案 1 :(得分:2)

您可以使用struct解压缩到unsigned int:

>>> import struct   
>>> struct.unpack('I',"\x66\x68\xb0\xef")[0]
4021315686