【Python札记】byte转integer

2022-10-18 09:35:48

摘自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编辑器好难用,写到页面底端就换行错乱,跳字符。

  • 作者:Silbera
  • 原文链接:https://blog.csdn.net/yinxingsha/article/details/52953853
    更新时间:2022-10-18 09:35:48