Tôi có một chuỗi hex dài đại diện cho một loạt các giá trị của các loại khác nhau. Tôi muốn chuyển đổi chuỗi hex này thành một mảng byte để tôi có thể chuyển từng giá trị ra và chuyển đổi nó thành kiểu dữ liệu phù hợp của nó.
Hỏi ngày 13 tháng 4 năm 2011 lúc 12:43Apr 13, 2011 at 12:43
RichardrichardRichard
Phù bằng vàng 14.5k30 Huy hiệu bạc 108 Huy hiệu đồng30 gold badges83 silver badges108 bronze badges
1
Giả sử chuỗi hex của bạn là một cái gì đó giống như
>>> hex_string = "deadbeef"
Chuyển đổi nó thành một bytearray [Python 3 và 2.7]:
>>> bytearray.fromhex[hex_string]
bytearray[b'\xde\xad\xbe\xef']
Chuyển đổi nó thành đối tượng byte [Python 3]:
>>> bytes.fromhex[hex_string]
b'\xde\xad\xbe\xef'
Lưu ý rằng
>>> bytearray.fromhex[hex_string]
bytearray[b'\xde\xad\xbe\xef']
1 là phiên bản bất biến của >>> bytearray.fromhex[hex_string]
bytearray[b'\xde\xad\xbe\xef']
2.Chuyển đổi nó thành một chuỗi [Python 2.7]:
>>> hex_data = hex_string.decode["hex"]
>>> hex_data
"\xde\xad\xbe\xef"
wjandrea
25.1k8 Huy hiệu vàng53 Huy hiệu bạc73 Huy hiệu đồng8 gold badges53 silver badges73 bronze badges
Đã trả lời ngày 15 tháng 4 năm 2011 lúc 22:32Apr 15, 2011 at 22:32
Tzottzottzot
89.6K29 Huy hiệu vàng138 Huy hiệu bạc201 Huy hiệu đồng29 gold badges138 silver badges201 bronze badges
2
Có một chức năng tích hợp trong bytearray thực hiện những gì bạn dự định.
bytearray.fromhex["de ad be ef 00"]
Nó trả về một bytearray và nó đọc các chuỗi hex có hoặc không có dấu phân cách không gian.
Đã trả lời ngày 13 tháng 11 năm 2012 lúc 15:01Nov 13, 2012 at 15:01
Kuggkuggkugg
1.6691 Huy hiệu vàng10 Huy hiệu bạc5 Huy hiệu đồng1 gold badge10 silver badges5 bronze badges
2
miễn là tôi hiểu chính xác, bạn nên tìm Binascii.unhexlify
import binascii
a='45222e'
s=binascii.unhexlify[a]
b=[ord[x] for x in s]
Đã trả lời ngày 13 tháng 4 năm 2011 lúc 12:51Apr 13, 2011 at 12:51
BruceBruceBruce
7,0641 Huy hiệu vàng24 Huy hiệu bạc42 Huy hiệu đồng1 gold badge24 silver badges42 bronze badges
1
Giả sử bạn có một chuỗi byte như vậy
"\ x12 \ x45 \ x00 \ xab"
Và bạn biết số lượng byte và loại của chúng bạn cũng có thể sử dụng phương pháp này
import struct
bytes = '\x12\x45\x00\xAB'
val = struct.unpack['>> bytearray.fromhex[hex_string]
bytearray[b'\xde\xad\xbe\xef']
0Điều này sẽ lặp lại trên mỗi char trong chuỗi và chạy nó thông qua hàm ord []. Chỉ được thử nghiệm trên Python 2.6, không quá chắc chắn về 3.0+.
-Josh
Đã trả lời ngày 13 tháng 4 năm 2011 lúc 12:49Apr 13, 2011 at 12:49
Karlwkarlwkarlw
6624 Huy hiệu bạc13 Huy hiệu Đồng4 silver badges13 bronze badges
3