Forum >> Principianti >> Scrivere un file in binario attraverso python

Pagina: 1

Salve a tutti, volevo sapere in che modo fosse possibile, avendo dei valori esadecimali, scriverli all'interno di un file attraverso python.

Per esempio l'utente dà il valore "FF" in esadecimale, e il programma lo legge, apre un nuovo file (o uno già esistente) e aggiunge in coda il valore FF all'interno del file, cosicché quando lo si apre con un editor esadecimale compaia FF

Non so se mi sono spiegato bene, in ogni caso grazie dell'attenzione :)
Un file binario è composto da byte.

Ogni byte contiene un valore da zero a duecentocinquantacinque.

Questo valore, mettiamo duecentocinquantacinque, può essere rappresentato a video in diversi modi: esadecimale 'FF', binario '11111111', decimale '255' ecc.

Ma non esiste un "valore esadecimale" in sè stesso.

L'utente può certamente inserire la stringa di caratteri FF (che rappresentano il valore duecentocinquantacinque espresso in esadecimale), ma nel file non si devono scrivere i due byte della codifica ASCII dei caratteri 'F', si deve scrivere un solo byte di valore duecentocinquantacinque.

Quindi:
open('nomefile', 'wb').write(int(stringa_esa, 16))


--- Ultima modifica di Claudio_F in data 2018-09-06 17:42:05 ---
*** Il codice va evidenziato con il simbolo di fianco ai colori per non perdere l'indentazione ***
Un file binario è composto da byte.

Ogni byte contiene un valore da zero a duecentocinquantacinque.

Questo valore, mettiamo duecentoconquantacinque, può essere rappresentato a video in diversi modi: esadecimale 'FF', binario '11111111', decimale '255' ecc.

Ma non esiste un "valore esadecimale" in sè stesso.

L'utente può certamente inserire la stringa di caratteri FF (che rappresentano il valore duecentocinquantacinque espresso in esadecimale), ma nel file non si devono scrivere i due byte della codifica ASCII dei caratteri 'F', si deve scrivere un solo byte di valore duecentocinquantacinque.

Quindi:

open('nomefile', 'wb').write(int(stringa_esa, 16))



--- Ultima modifica di Claudio_F in data 2018-09-04 18:32:15 ---
Ho provato a fare come dici, ma mi dà questo errore




Ma se provo a convertire un qualunque numero n da 0 a 255 in bytes mi dà come risultato, reiterato n volte,





\x00
Grazie ancora per l'aiuto!




Giusto, che sciocco, troppi write su Arduino....

Intanto Python2 o 3?

Su un file binario si scrivono byte.
In Python2 i byte sono le stringhe "standard":
.write(chr(int("FF", 16)))

In Python3 i byte sono gli oggetti bytes:

.write(bytes([int("FF", 16)]))


--- Ultima modifica di Claudio_F in data 2018-09-06 17:44:23 ---
*** Il codice va evidenziato con il simbolo di fianco ai colori per non perdere l'indentazione ***


Pagina: 1



Esegui il login per scrivere una risposta.