Phương pháp nhanh nhất để chuyển đổi chuỗi dữ liệu nhị phân thành giá trị số bằng Python là gì?chuyển đổi dữ liệu nhị phân nhanh trong Python
Tôi đang sử dụng struct.unpack_from()
nhưng đang đạt đến giới hạn hiệu suất.
Bối cảnh: luồng đến là dữ liệu nhị phân và ASCII hỗn hợp. Việc chuyển đổi dữ liệu ASCII được thực hiện bằng C mặc dù ctypes. Việc triển khai giải nén trong C thông qua các ctypes mang lại hiệu suất tương tự để giải nén. Tôi đoán là chi phí cuộc gọi quá nhiều yếu tố. Tôi đã hy vọng tìm thấy một phương pháp cưỡng chế C giống như bản địa (tuy nhiên không phải Pythonic). Rất có thể tất cả các mã này sẽ cần phải di chuyển đến C.
Luồng theo thứ tự byte mạng (lớn cuối) và máy nhỏ gọn. Một chuyển đổi ví dụ sẽ là:
import struct
network_stream = struct.pack('>I', 0x12345678)
(converted_int,) = struct.unpack_from('>I', network_stream, 0)
tôi ít quan tâm đến việc xử lý các định dạng stream, so với các trường hợp chung của chuyển đổi nhị phân, và nếu có, ngay cả một thay thế cho unpack
. Ví dụ: socket.ntohl()
yêu cầu một int và int()
sẽ không chuyển đổi chuỗi dữ liệu nhị phân.
Cảm ơn đề xuất của bạn!
Chính xác bạn đang giải nén những gì? Nó chỉ đơn giản là một mảng đồng nhất của các giá trị số? –
Thật không may nó là một dòng hỗn hợp của các đơn, nơi mà nội dung được chỉ ra bởi một tiêu đề. Hầu hết các chuyển đổi là cho 4B số nguyên và phao nổi. – CNK
trường hợp thử nghiệm sẽ được tốt đẹp ở đây – Triptych