Python đọc hex

Dữ liệu nhị phân được lưu trữ trong tệp hex được sử dụng rộng rãi, đặc biệt là trong các ứng dụng hệ thống nhúng. python setup.py develop8 cung cấp cho bạn quyền truy cập có lập trình vào nhiều định dạng và cung cấp API thực tế để làm việc với dữ liệu đó

Tải phiên bản mới nhất từ ​​Github

Cài đặt

pip install objutils

hoặc chạy

python setup.py develop

trên cài đặt cục bộ của bạn

điều kiện tiên quyết

  • Trăn >= 3. 4

Đặc trưng

  • Các tệp ELF có thể đọc, bao gồm các ký hiệu
  • Truy cập được đánh máy (vô hướng và mảng) vào dữ liệu nhị phân

Các định dạng HEX được hỗ trợ

python setup.py develop8 hỗ trợ nhiều định dạng HEX

Hiện hành

  • codec/tên định dạng
  • ihex (Intel HEX)
  • shf (S Hexdump (rfc4194))
  • src (Bản ghi S của Motorola)
  • titxt (Văn bản Công cụ Texas)

lịch sử

  • codec/tên định dạng
  • tro (ASCII Space Hex)
  • vũ trụ (RCA Cosmac)
  • emon52 (Điện máy EMON52)
  • etek (Hệ thập lục phân mở rộng của Tektronix)
  • fpc (Mã bốn gói)
  • mostec (Công nghệ MOS)
  • rca (RCA)
  • sig (Ký hiệu)
  • tek (Hệ thập lục phân Tektronix)

codec là tham số đầu tiên cho hàm dump() / load(), e. g

img = objutils.load("ihex", "myHexFile.hex") # Load an Intel HEX file... objutils.dump("srec", "mySRecFile.srec", img) # and save it as S-Records.

Những bước đầu tiên

Nếu bạn quan tâm, những gì mà python setup.py develop8 cung cấp cho bạn ngay lập tức, hãy tham khảo tài liệu về Scripts

Trong mọi trường hợp, bạn nên làm việc thông qua hướng dẫn sau

Trước tiên hãy nhập tất cả các lớp và hàm được sử dụng trong hướng dẫn này

from objutils import Image, Section, dump, dumps, load, loads

Mọi thứ bắt đầu với thế giới xin chào

sec0 = Section(start_address = 0x1000, data = "Hello HEX world!")

Các tham số hàm tạo cho Phần phản ánh nội dung của chúng. Một vùng liên tục của bộ nhớ với một địa chỉ bắt đầu

dữ liệu không nhất thiết phải là chuỗi, mảng. mảng**s, **byte, bytearray cũng sẽ làm được hoặc từ quan điểm nội bộ. mọi thứ có thể chuyển đổi thành bytearray đều có thể được sử dụng

Ghi chú. start_address và data là các đối số vị trí, vì vậy không cần sử dụng chúng làm từ khóa (chỉ để minh họa)

Bây giờ hãy kiểm tra phần của chúng tôi

________số 8

hexdump() cung cấp cho chúng ta, thứ mà trong thế giới tin tặc được gọi là hexdump chính tắc

Các tệp HEX thường bao gồm nhiều phần, vì vậy hãy tạo một phần khác

sec1 = Section(0x2000, range(1, 17)) sec1.hexdump() 00002000 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 |................| --------------- 16 bytes ---------------

Bây giờ, hãy dán các phần của chúng ta lại với nhau

pip install objutils0

Hình ảnh rõ ràng là nơi chứa các phần và chúng luôn liên quan nếu bạn đang tương tác với các tệp HEX dựa trên đĩa

pip install objutils1

Tệp kết quả có thể được kiểm tra từ dòng lệnh

pip install objutils2

Và tải lại

python setup.py develop0

Điều này dẫn đến thành ngữ chuyển đổi

python setup.py develop1

Ghi chú. các định dạng ở trên được liệt kê là lịch sử vì một lý do chính đáng là lịch sử. chúng chỉ rộng 16 bit, vì vậy nếu bạn muốn chuyển đổi, hãy nói tệp srec cho MCU 32 bit đối với chúng, bạn không gặp may

OK, chúng tôi đang bắt đầu một phiên khác

python setup.py develop2

Hai phần có dải địa chỉ liên tiếp được nối thành một, điều này có thể đúng hoặc không như bạn mong đợi

Vì lý do này Hình ảnh có tham số tham gia

python setup.py develop3

Một đặc điểm khiến các objutil khác biệt với các thư viện khác thuộc loại này là quyền truy cập điển hình.

Chúng tôi đang bắt đầu với một hình ảnh mới

python setup.py develop4

Bây giờ chúng tôi đang viết một chuỗi vào hình ảnh của chúng tôi

python setup.py develop5

Chú ý sự khác biệt?

Sử dụng các hàm write() và read() nếu bạn muốn truy cập các byte đơn giản

Nhưng cũng có hỗ trợ cho các loại số

python setup.py develop6

Các loại sau đây được hỗ trợ

  • uint8
  • int8
  • uint16
  • int16
  • uint32
  • int32
  • uint64
  • int64
  • phao32
  • phao64

Trong mọi trường hợp, các hậu tố về tuổi thọ _ be hoặc _l là bắt buộc

Mảng cũng được hỗ trợ

python setup.py develop7

Điều này kết thúc hướng dẫn của chúng tôi bây giờ, nhưng có nhiều thứ hơn để làm theo

Tài liệu

Để có tài liệu đầy đủ, bao gồm cài đặt, hướng dẫn và tài liệu PDF, vui lòng xem Readthedocs

Lỗi/Yêu cầu

Vui lòng sử dụng trình theo dõi vấn đề GitHub để gửi lỗi hoặc yêu cầu các tính năng

Người giới thiệu

Dưới đây là tổng quan về một số định dạng tệp hex cổ điển

tác giả

  • Christoph Schueler - Công việc ban đầu và trưởng dự án

Giấy phép

Dự án này được cấp phép theo Giấy phép Công cộng GNU v2. 0

Sự đóng góp

Nếu bạn đóng góp mã cho dự án này, bạn hoàn toàn cho phép mã của mình được phân phối theo Giấy phép Công cộng GNU v2. 0. Bạn cũng đang ngầm xác minh rằng tất cả mã đều là tác phẩm gốc của bạn

Hex() trả về gì trong Python?

Hàm hex() chuyển đổi số đã chỉ định thành giá trị thập lục phân . Chuỗi trả về luôn bắt đầu bằng tiền tố 0x.

Làm cách nào để chuyển đổi hex sang ASCII trong Python?

4 cách Pythonic để chuyển đổi từ HEX sang ASCII .
Phương pháp 1. Sử dụng fromhex() và giải mã()
Phương pháp 2. sử dụng codec. giải mã()
Phương pháp 3. Sử dụng tham gia()
Phương pháp 4. Sử dụng binascii. a2b_hex()
Thưởng. Tạo báo giá ngẫu nhiên

Bạn có thể đọc các tệp hex không?

Các tệp HEX có thể được lưu trữ ở định dạng nhị phân hoặc văn bản. Các tệp HEX được hỗ trợ bởi một số trình chỉnh sửa, bao gồm Heaventools FlexHex, Hex Workshop Hex Editor và HexEdit . Nếu bạn có tệp nhị phân HEX, nó chỉ có thể được mở bằng các chương trình chỉnh sửa hex.

Chủ đề