欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python實(shí)現(xiàn)byte轉(zhuǎn)integer

 更新時(shí)間:2021年06月03日 10:29:26   作者:Silbera  
這篇文章主要介紹了Python實(shí)現(xiàn)byte轉(zhuǎn)integer操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

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

需求:將形如'y\xcc\xa6\xbb'的byte字符串轉(zhuǎn)化為integer

方法 1 導(dǎo)入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 借助十六進(jìn)制轉(zhuǎn)換

大端法:

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 自己寫函數(shù)實(shí)現(xiàn)

如:

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編輯器好難用,寫到頁面底端就換行錯(cuò)亂,跳字符。

python int 轉(zhuǎn)byte,byte轉(zhuǎn)int

data_byte1 = int(1324).to_bytes(length=2, byteorder='big', signed=True)
#int(參數(shù)):參數(shù)代表要被轉(zhuǎn)換的數(shù)字
#length=2:代表要轉(zhuǎn)換成幾個(gè)字節(jié)
#byteorder='big'代表高位在前,相反little
data_byte2 = int().from_bytes(data_byte1, byteorder='big', signed=True)
print(data_byte1) print(data_byte2)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論