1 回答

TA貢獻(xiàn)1777條經(jīng)驗(yàn) 獲得超10個(gè)贊
好吧,我想我現(xiàn)在明白你了。您應(yīng)該使用np.frombuffer而不是np.array,因?yàn)閚p.array將其輸入視為可迭代的,迭代字節(jié)只會(huì)給您整數(shù)。您希望將字節(jié)視為原始緩沖區(qū)。
注意區(qū)別:
>>> np.array(bytearray([1,2,3,4]), dtype=np.uint32)
array([1, 2, 3, 4], dtype=uint32)
>>> np.frombuffer(bytearray([1,2,3,4]), dtype=np.uint32)
array([67305985], dtype=uint32)
所以,你想要這樣的東西:
def swap32(x):
return np.frombuffer(x, dtype=np.uint32).byteswap().tobytes()
請(qǐng)注意,這要求 bytes 對(duì)象的長(zhǎng)度是數(shù)組項(xiàng)目大小的倍數(shù),即在本例中為 4 的倍數(shù)。
無(wú)論如何,在行動(dòng)中:
>>> swap32(bytes([1,2,3,4]))
b'\x04\x03\x02\x01'
添加回答
舉報(bào)