1
A
回答
2
0
可以使用struct
包爲:
from struct import unpack
tuple_of_shorts = unpack('h'*(len(barray)//2),barray)
這將產生簽署短褲。對於無符號的,使用'H'
代替:
tuple_of_shorts = unpack('H'*(len(barray)//2),barray)
這將產生一個小端機上爲您的樣品輸入:
>>> struct.unpack('h'*(len(barray)//2),barray)
(-512, 75)
>>> struct.unpack('H'*(len(barray)//2),barray)
(65024, 75)
如果你想與大端,或工作小尾數,你可以在規格中輸入>
(大端)或<
(小端)。例如:
# Big endian
tuple_of_shorts = unpack('>'+'H'*(len(barray)//2),barray) # unsigned
tuple_of_shorts = unpack('>'+'h'*(len(barray)//2),barray) # signed
# Little endian
tuple_of_shorts = unpack('<'+'H'*(len(barray)//2),barray) # unsigned
tuple_of_shorts = unpack('<'+'h'*(len(barray)//2),barray) # signed
生成:
>>> unpack('>'+'H'*(len(barray)//2),barray) # big endian, unsigned
(254, 19200)
>>> unpack('>'+'h'*(len(barray)//2),barray) # big endian, signed
(254, 19200)
>>> unpack('<'+'H'*(len(barray)//2),barray) # little endian, unsigned
(65024, 75)
>>> unpack('<'+'h'*(len(barray)//2),barray) # little endian, signed
(-512, 75)
0
如果內存效率是一個問題,你可以考慮使用array.array
:
>>> barr = b'\x00\xfe\x4b\x00'
>>> import array
>>> short_array = array.array('h', barr)
>>> short_array
array('h', [-512, 75])
這就好比一個節省空間的基本數組,使用OO包裝,因此它支持序列類型的方法,您可以在list
上使用,如.append
,.pop
和切片!
>>> short_array[:1]
array('h', [-512])
>>> short_array[::-1]
array('h', [75, -512])
此外,恢復您的bytes
對象變得微不足道:
>>> short_array
array('h', [-512, 75])
>>> short_array.tobytes()
b'\x00\xfeK\x00'
注意,如果你想從本機字節順序相反的字節順序,使用就地byteswap
方法:
>>> short_array.byteswap()
>>> short_array
array('h', [254, 19200])
0
請注意,使用Python struct
庫來轉換您的數組也允許您爲表單中的每個項目指定重複計數在說明者。因此,例如4H
將與使用HHHH
相同。
使用這種方法避免了需要創造潛在的巨大的格式化字符串:
import struct
barray = b'\x00\xfe\x4b\x00\x4b\x00'
integers = struct.unpack('{}H'.format(len(barray)/2), barray)
print(integers)
給你:
(65024, 75, 75)
相關問題
- 1. 將bytearray轉換爲整數
- 2. wchar_t的*以短整型轉換
- 3. PDF轉ByteArray轉換
- 4. 如何將python str轉換爲bytearray
- 5. AS3轉換ByteArray的位圖
- 6. 轉換字節,短整型,int值的NSData或NSMutableData沒有轉換成的NSString
- 7. Python,將整型轉換爲字節。
- 8. 轉換PIL圖像爲bytearray
- 9. 將ByteArray轉換爲NSData
- 10. 將BinaryString轉換爲ByteArray - Java
- 11. 將負值轉換爲bytearray
- 12. 將System.Windows.Media.ImageSource轉換爲ByteArray
- 13. .net將bytearray轉換爲double []
- 14. 將MovieClip轉換爲ByteArray
- 15. 在python將字符串轉換到短
- 16. 在C++類型轉換從短陣到短CONST * const的*
- 17. 在Flex中將ByteArray轉換爲Integer
- 18. 在javascript中將值轉換爲bytearray
- 19. 在Windows Phone上將ByteArray轉換爲base64
- 20. 如何從int轉換爲無符號短整型 - iPhone
- 21. python bytearray
- 22. VB.net整數和短轉換,GetMessagePos()
- 23. 將字節轉換爲短或整數
- 24. Python類型轉換
- 25. 轉換位圖的ByteArray反之亦然
- 26. 將byteArray轉換爲android中的位圖?
- 27. 無法轉換圖像位圖的ByteArray
- 28. 轉換字節陣列(char數組),以一個整數類型(短整型,整型,長)
- 29. C++是否將長整型,短整型和所有整型轉換爲uint32_t,int32_t等都有幫助?
- 30. 轉換整數Python中
@NabIlovich這不是重複。完全不同的用例。 – viraptor