摘自convert a string of bytes into an int (python) - Stack Overflow
需求:将形如’y\xcc\xa6\xbb’的byte字符串转化为integer
方法 1 导入struct包
importstructstruct.unpack("<L","y\xcc\xa6\xbb")[0]
方法 2 python3.2及以上
若byte串采取大端法:
int.from_bytes(b'y\xcc\xa6\xbb', byteorder='big')
若采取小端法,则:
int.from_bytes(b'y\xcc\xa6\xbb', byteorder='little')
方法3 借助十六进制转换
大端法:
s ='y\xcc\xa6\xbb'
num =int(s.encode('hex'),16)
小端法:
int(''.join(reversed(s)).encode('hex'),16)
方法4 使用array包
importarray
integerValue=array.array("I",'y\xcc\xa6\xbb')[0]
其中I用于表示大端或小端,且使用此方法要注意自己使用的python版本。
方法5 自己写函数实现
如:
sum(ord(c) << (i *8)for i, cin enumerate('y\xcc\xa6\xbb'[::-1]))
又如:
defbytes2int( tb, order='big'):if order =='big': seq=[0,1,2,3]elif order =='little': seq=[3,2,1,0]
i =0for jin seq: i = (i<<8)+tb[j]return i
ps: CSDN的markdown编辑器好难用,写到页面底端就换行错乱,跳字符。