Tôi thường thực hiện những việc như thế này trong C++, nhưng tôi đang sử dụng python để viết kịch bản nhanh và tôi đã chạy vào tường.Python, cách đặt số nguyên 32 bit vào mảng byte
Nếu tôi có danh sách nhị phân (hoặc bất kỳ python nào lưu trữ kết quả của "fread"). Tôi có thể truy cập các byte riêng lẻ trong đó bằng: bộ đệm [0], bộ đệm [1], v.v.
Tôi cần thay đổi byte [8-11] để giữ kích thước tệp 32 bit mới (đọc: đã có một tập tin ở đó, tôi cần phải cập nhật nó). Trong C + + tôi sẽ chỉ nhận được một con trỏ đến vị trí và cast nó để lưu trữ các số nguyên, nhưng với python tôi đột nhiên nhận ra tôi không có ý tưởng làm thế nào để làm một cái gì đó như thế này.
Làm cách nào để cập nhật 4 byte trong bộ đệm của tôi tại một vị trí cụ thể để giữ giá trị của một số nguyên trong python?
EDIT
tôi sẽ bổ sung thêm vì tôi có thể dường như không để con số nó ra khỏi các giải pháp (mặc dù tôi có thể thấy họ đang đi đúng hướng).
Trước hết, tôi đang ở trên trăn 2.4 (và không thể nâng cấp, các máy chủ công ty lớn) - do đó dường như giới hạn các tùy chọn của tôi. Xin lỗi vì đã không đề cập đến điều đó trước đó, tôi không biết nó có rất ít tính năng hơn.
Thứ hai, hãy làm điều này cực kỳ đơn giản.
Cho phép nói rằng tôi có tệp nhị phân có tên 'myfile.binary' với nội dung năm byte '4C53535353' trong hex - điều này tương đương với biểu diễn ascii cho chữ cái "L và 4xS" một mình trong tệp.
Nếu tôi làm:
f = open('myfile.binary', 'rb')
contents = f.read(5)
nội dung nên (từ câu trả lời Sven Marnach của) tổ chức một lăm-byte chuỗi không thay đổi.
Chỉ sử dụng cơ sở Python 2.4, làm cách nào tôi có thể thay đổi 4 S được giữ trong 'nội dung' thành giá trị số nguyên tùy ý? I E. cung cấp cho tôi một dòng mã có thể tạo nội dung chỉ mục byte [1-4] chứa số nguyên 32 bit 'myint' với giá trị 12345678910.
bạn không thể thay đổi nội dung từ các chuỗi không thay đổi ... bạn có thể cre ăn một chuỗi mới, hoặc sử dụng một container có thể thay đổi như bytearray. – hochl
Cảm ơn, tôi rất vui khi tạo chuỗi mới hoặc mảng byte nếu trường hợp đó xảy ra. Làm thế nào tôi có thể tạo một mảng byte có thể sửa đổi với cùng các contnets, và cập nhật phạm vi [1-4] của nó bằng với biểu diễn nhị phân của số nguyên của tôi? –
Tôi đã mở rộng bài đăng của mình bên dưới và bao gồm ví dụ làm việc cho Python 2.4 :-) – hochl