Python đọc bù tệp nhị phân

Pyguys
Lập trình viên tên Tim

Bài đăng. 17

Chủ đề. 6

Đã tham gia. Tháng 3 năm 2020

Danh tiếng. 0

#1

09-07-2020, 10. 45 CH

làm chủ đề. tôi muốn đọc một tập tin nhị phân. tôi cần một số bù đắp trong đó và kiểm soát bởi endian lớn hoặc nhỏ. nhưng tôi có vấn đề với nó.

path_xd = 'xxxxx'
pattern = b'\x14\x02'
reg_xd=re.compile[pattern]
with open[path_xd, 'r+b'] as p_xd:
    data=p_xd.read[]
    for x in reg_xd.finditer[data]:
        offset=x.start[]
        p_xd.seek[offset]
        data_1402=p_xd.read[16]
        xd_name=int.from_bytes[data_1402[2:4], byteorder='little']
        xd_name=[str[xd_name].replace['0', '']].zfill[2]
        print[xd_name]
        print[data_1402]
        print[data_1402[5:9]]
tôi nhận được đầu ra như thế này

Output:

b'\x14\x02\x01\x00 \x00\x00\x00\x03\x18\x90BW#\x08\x00'
nó trông như thế nào trong terminal

Output:

402 0100 2000 0000 0318 9042 5723 [.... ......BW# 00000040: 0800 5723 0800
có vẻ như thiếu một số byte trong đầu ra python.

tôi muốn kết quả có định dạng như thế này. cho tập tin đầy đủ. có vẻ như tôi đã hiểu lầm một cái gì đó ở đây. cần trợ giúp với đầu ra tệp hex và endian lớn/nhỏ xin vui lòng tư vấn. cảm ơn.

Output:

\x14\x02\x01\x00\x20\x00\x00\x00\x03\x18\x90\x42\x57\x23\x08\x00\x57\x23\x08\x00

Hồi đáp

Tìm thấy

Hồi đáp

Pyguys
Lập trình viên tên Tim

Bài đăng. 17

Chủ đề. 6

Đã tham gia. Tháng 3 năm 2020

Danh tiếng. 0

#2

Jul-12-2020, 01. 04 giờ sáng

lên. bất cứ ai có thể giúp đỡ?

Hồi đáp

Tìm thấy

Hồi đáp

bowlofred
Da Bishop

Bài đăng. 1.523

Chủ đề. 3

Đã tham gia. Tháng 3 năm 2020

Danh tiếng. 163

#3

Jul-12-2020, 03. 14 giờ sáng

Tôi không hiểu đầu ra của bạn xuất hiện khi nào. Cái đầu tiên nói rằng bạn nhận được "đầu ra như vậy" và cái thứ hai nói rằng nó trông như thế nào trong thiết bị đầu cuối. Tôi hy vọng đầu ra của bạn sẽ ở trong một thiết bị đầu cuối. Làm cách nào để bạn tạo tệp đầu tiên và cách bạn tạo tệp thứ hai?

Bạn có ví dụ về tệp 'xxxxx' mà ai đó có thể thực thi mã của bạn không?

Hồi đáp

Tìm thấy

Hồi đáp

bowlofred
Da Bishop

Bài đăng. 1.523

Chủ đề. 3

Đã tham gia. Tháng 3 năm 2020

Danh tiếng. 163

#4

Jul-12-2020, 05. 32 giờ sáng

Có vẻ như ít nhất một phần bạn có chuỗi byte. Khi được in theo mặc định, nếu byte ánh xạ tới ký tự ASCII [như \x20], thì nó sẽ in ký tự đó. \x20 là khoảng trắng, vì vậy số 20 sẽ bị xóa và thay thế bằng khoảng trắng trong bản in của bạn.

Nếu bạn chỉ cần các giá trị hex, bạn có thể sử dụng [trong số những thứ khác] phương thức hex.

______4Nếu bạn muốn định dạng cụ thể, bạn có thể tách nó ra và thêm "\x" ở phía trước.

______5

Hồi đáp

Tìm thấy

Hồi đáp

Pyguys
Lập trình viên tên Tim

Bài đăng. 17

Chủ đề. 6

Đã tham gia. Tháng 3 năm 2020

Danh tiếng. 0

#5

13-07-2020, 02. 34 giờ sáng

Cảm ơn bạn đã giúp đỡ

Hồi đáp

Tìm thấy

Hồi đáp

Phương thức tệp Python seek[] đặt vị trí hiện tại của tệp ở phần bù. Đối số wherece là tùy chọn và mặc định là 0, có nghĩa là vị trí tệp tuyệt đối, các giá trị khác là 1 có nghĩa là tìm kiếm tương ứng với vị trí hiện tại và 2 có nghĩa là tìm kiếm tương ứng với phần cuối của tệp

không có giá trị quay lại. Lưu ý rằng nếu tệp được mở để nối thêm bằng cách sử dụng 'a' hoặc 'a+', mọi thao tác tìm kiếm [] sẽ được hoàn tác ở lần ghi tiếp theo

Nếu tệp chỉ được mở để ghi ở chế độ chắp thêm bằng cách sử dụng 'a', thì phương pháp này về cơ bản là không hoạt động, nhưng nó vẫn hữu ích cho các tệp được mở ở chế độ chắp thêm có bật đọc [chế độ 'a+']

Nếu tệp được mở ở chế độ văn bản bằng cách sử dụng 't', chỉ các phần bù được trả về bởi Tell[] là hợp lệ. Việc sử dụng các phần bù khác gây ra hành vi không xác định

Lưu ý rằng không phải tất cả các đối tượng tệp đều có thể tìm kiếm được

cú pháp

Sau đây là cú pháp của phương thức seek[] −

fileObject.seek[offset[, whence]]

Thông số

  • offset − Đây là vị trí của con trỏ đọc/ghi trong tệp

  • wherece - Đây là tùy chọn và mặc định là 0 có nghĩa là vị trí tệp tuyệt đối, các giá trị khác là 1 có nghĩa là tìm kiếm tương ứng với vị trí hiện tại và 2 có nghĩa là tìm kiếm tương ứng với phần cuối của tệp

    Làm cách nào để đọc dữ liệu từ tệp nhị phân trong Python?

    Để đọc từ tệp nhị phân, chúng ta cần mở tệp đó bằng chế độ rb thay vì chế độ mặc định là rt . >>> với open["bài tập. zip", mode="rb"] dưới dạng zip_file. . nội dung = zip_file. đọc[].

    Làm cách nào để đọc tệp hình ảnh nhị phân trong Python?

    Tệp nhị phân có thể bao gồm từ tệp hình ảnh như JPEG hoặc GIF, tệp âm thanh như MP3 hoặc định dạng tài liệu nhị phân như Word hoặc PDF. Trong Python, các tệp được mở ở chế độ văn bản theo mặc định. Để mở tệp ở chế độ nhị phân, khi chỉ định một chế độ, hãy thêm 'b' vào đó .

    Phần bù trong tệp nhị phân là gì?

    Đệ nhị phân offset, còn được gọi là thừa-K, thừa-N, thừa-e, mã thừa hoặc biểu diễn sai lệch, là một phương pháp biểu diễn số có dấu trong đó số có dấu . .

    Làm cách nào để đọc tệp CSV nhị phân bằng Python?

    Để đọc tệp nhị phân, hãy sử dụng hàm open['rb'] trong trình quản lý ngữ cảnh [ có từ khóa] và đọc nội dung của nó thành một biến chuỗi bằng f. readlines[] . Sau đó, bạn có thể chuyển đổi chuỗi thành CSV bằng nhiều cách tiếp cận khác nhau, chẳng hạn như mô-đun csv.

Chủ Đề