2010-03-07 50 views

Trả lời

5
[int(x, 16) for x in L] 
+0

Tôi nghĩ rằng bạn có ý nghĩa 'int (x, 16)' –

3

[0xBB, 0xA7, 0xF6, 0x9E] cũng giống như [187, 167, 158]. Vì vậy, không có dạng 'số nguyên hex' đặc biệt hoặc dạng tương tự.

Nhưng bạn có thể chuyển đổi chuỗi hex của bạn để ints:

>>> [int(x, 16) for x in ['BB', 'A7', 'F6', '9E']] 
[187, 167, 246, 158] 

Xem thêm Convert hex string to int in Python

+0

Tôi có danh sách trong python với nội dung sau P SENDING DATA Q . Q . –

4

Tùy thuộc vào định dạng trong file văn bản, nó có thể được dễ dàng hơn để chuyển đổi trực tiếp

>>> b=bytearray('BBA7F69E'.decode('hex')) 

hoặc

>>> b=bytearray('BB A7 F6 9E'.replace(' ','').decode('hex')) 
>>> b 
bytearray(b'\xbb\xa7\xf6\x9e') 
>>> b[0] 
187 
>>> hex(b[0]) 
'0xbb' 
>>> 

một bytearray có thể dễ dàng chuyển đổi sang một danh sách

>>> list(b) == [0xBB, 0xA7, 0xF6, 0x9E] 
True 

>>> list(b) 
[187, 167, 246, 158] 

Nếu bạn muốn thay đổi cách danh sách được hiển thị bạn sẽ cần phải thực hiện danh sách lớp của riêng bạn

>>> class MyList(list): 
... def __repr__(self): 
... return '['+', '.join("0x%X"%x if type(x) is int else repr(x) for x in self)+']' 
... 
>>> MyList(b) 
[0xBB, 0xA7, 0xF6, 0x9E] 
>>> str(MyList(b)) 
'[0xBB, 0xA7, 0xF6, 0x9E]' 
Các vấn đề liên quan