Python实现byte转integer

摘自convert a string of bytes into an int (python) – Stack Overflow

需求:将形如\’y\\xcc\\xa6\\xbb\’的byte字符串转化为integer

方法 1 导入struct包

import struct
struct.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包

import array
integerValue = array.array(\"I\", \'y\\xcc\\xa6\\xbb\')[0]

其中I用于表示大端或小端,且使用此方法要注意自己使用的python版本。

方法5 自己写函数实现

如:

sum(ord(c) << (i * 8) for i, c in enumerate(\'y\\xcc\\xa6\\xbb\'[::-1]))

又如:

def bytes2int( tb, order=\'big\'):
    if order == \'big\': seq=[0,1,2,3]
    elif order == \'little\': seq=[3,2,1,0]
    i = 0
    for j in seq: i = (i<<8)+tb[j]
    return i

ps: CSDN的markdown编辑器好难用,写到页面底端就换行错乱,跳字符。

python int 转byte,byte转int

data_byte1 = int(1324).to_bytes(length=2, byteorder=\'big\', signed=True)
#int(参数):参数代表要被转换的数字
#length=2:代表要转换成几个字节
#byteorder=\'big\'代表高位在前,相反little
data_byte2 = int().from_bytes(data_byte1, byteorder=\'big\', signed=True)
print(data_byte1) print(data_byte2)

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容