Zwykle wykonuję takie rzeczy w C++, ale używam Pythona do napisania skryptu i natknąłem się na ścianę.Python, jak wstawić 32-bitową liczbę całkowitą do tablicy bajtów
Jeśli mam listę binarną (lub jakikolwiek python przechowuje wynik "fread" w). Mam dostęp do poszczególnych bajtów w nim: buffer [0], buffer [1] itd.
Potrzebuję zmienić bajty [8-11], aby pomieścić nowy 32-bitowy rozmiar pliku (czytaj: tam jest już plik, muszę go zaktualizować). W C++ po prostu dostanę wskaźnik do lokalizacji i wyrzucę go do przechowywania liczby całkowitej, ale pytonem nagle uświadomiłem sobie, że nie mam pojęcia, jak to zrobić.
Jak mogę zaktualizować 4 bajty w moim buforze w określonej lokalizacji, aby zachować wartość liczby całkowitej w python?
EDIT
mam zamiar dodać więcej, bo nie potrafię zrozumieć to od rozwiązań (choć widzę, że jesteśmy na dobrej drodze).
Przede wszystkim jestem w Pythonie 2.4 (i nie mogę uaktualnić dużych serwerów korporacyjnych) - tak więc widocznie ograniczam moje opcje. Przepraszam, że nie wspomniałem o tym wcześniej, nie wiedziałem, że ma tak wiele mniej funkcji.
Po drugie, zróbmy to niezwykle proste.
Powiedzmy, że mam plik binarny o nazwie "myfile.binary" z pięciobajtową zawartością "4C53535353" w języku heksadecymalnym - to odpowiada reprezentacji ASCII dla liter "L i 4xS" będących sam w pliku.
Jeśli zrobić:
f = open('myfile.binary', 'rb')
contents = f.read(5)
zawartość powinna (od Sven Marnach za odpowiedź) posiadają pięć-bajtowy ciąg niezmienny.
Używając tylko urządzeń Python 2.4, jak mogę zmienić 4 S przechowywane w "zawartości" na dowolną liczbę całkowitą? To znaczy. daj mi linię kodu, która może sprawić, że zawartość indeksów bajtów [1-4] zawiera 32-bitową liczbę całkowitą "myint" o wartości 12345678910.
nie można zmienić zawartość od napisu jest niezmienny ... możesz cre zjadł nowy ciąg lub użył zmiennego pojemnika jak bytearray. – hochl
Dzięki, jestem szczęśliwy, aby utworzyć nowy ciąg lub tablicę bajtów, jeśli tak jest. W jaki sposób mogę utworzyć modyfikowalną tablicę bajtów z tymi samymi partycjami i zaktualizować zakres [1-4] tej wartości do binarnej reprezentacji mojej liczby całkowitej? –
Rozszerzyłem moją publikację poniżej i dodałem działający przykład dla Pythona 2.4 :-) – hochl